La colonne tutorielle suivante de composer vous présentera l'utilisation de Composer pour gérer les dépendances. J'espère qu'elle sera utile aux amis qui en ont besoin !
composer était à l'origine un outil conçu pour gérer les dépendances des packages dans Symfony, le Framework PHP. Parce qu'il est simple et facile à utiliser, il est désormais devenu un projet open source indépendant. . De nombreux frameworks et bibliothèques peuvent désormais être installés et gérés à l’aide de composer.
En fait, en PHP, il existe depuis longtemps un tel outil de gestion des dépendances des packages, qui est PEAR. Cependant, les paramètres de PEAR sont trop compliqués et il est difficile de définir des dépendances pour des projets individuels, c'est pourquoi Composer est désormais apprécié du public.
Cette introduction est réservée aux utilisateurs, elle ne couvrira donc pas les parties que les développeurs de packages doivent connaître.
* Installation
Si vous êtes un utilisateur Windows, il vous suffit de télécharger le fichier d'installation et d'exécuter l'installation :
https://getcomposer.org/Composer-Setup.exe
Si vous voulez pour l'installer manuellement, vous pouvez vous référer aux directives du site officiel :
http://getcomposer.org/doc/00-intro.md#installation-windows
Si vous êtes un utilisateur d'un système UNIX Like, vous pouvez l'installer via cette commande : (curl doit d'abord être installé)
curl -sS https://getcomposer.org/installer | php
Le programme d'installation vérifiera les paramètres PHP, puis téléchargera composer.phar dans le répertoire actuel. Pour exécuter composer, vous pouvez exécuter
php composer.phar
ou simplement le changer en fichier exécutable
>mv composer.phar composer >chmod +x composer
puis exécuter ./composer.
Cependant, si vous en avez besoin dans différents répertoires de travail et qu'il n'y a aucun problème avec l'autorisation d'exécution, vous pouvez également copier le fichier directement dans /usr/local/bin.
* Définir les dépendances
Lorsque vous utilisez composer dans un projet, vous devez d'abord générer un fichier composer.json, qui spécifie le package et la version à utiliser. Par exemple, si vous devez utiliser phpmailer pour envoyer une lettre, vous pouvez la spécifier comme ceci :
{ "require": { "phpmailer/phpmailer": "~5.2.7" } }
puis exécuter l'installation :
eng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ composer install Loading composer repositories with package information Installing dependencies (including require-dev) - Installing phpmailer/phpmailer (v5.2.7) Downloading: 100% Writing lock file Generating autoload files Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$
C'est l'installation. Jetez un oeil à ce qui est installé :
Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ ls -l total 16 -rw-r--r-- 1 fillano staff 66 10 11 18:15 composer.json -rw-r--r-- 1 fillano staff 2330 10 11 18:16 composer.lock drwxr-xr-x 5 fillano staff 170 10 11 18:16 vendor
D'après les fichiers dans le répertoire, on peut constater qu'à l'origine il n'y avait que le fichier composer.json, mais après l'installation, il y a un fichier composer.lock et le répertoire des fournisseurs. Jetons d'abord un coup d'œil au contenu de composer.lock :
Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ cat composer.lock { "_readme": [ "This file locks the dependencies of your project to a known state", "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" ], "hash": "065c23f92d5ae579cb91beff67f41196", "packages": [ { "name": "phpmailer/phpmailer", "version": "v5.2.7", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", "reference": "8717a79565b2c0ed67f851d70e1949febdf3b226" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/8717a79565b2c0ed67f851d70e1949febdf3b226", "reference": "8717a79565b2c0ed67f851d70e1949febdf3b226", "shasum": "" }, "require": { "php": ">=5.0.0" }, "require-dev": { "phpdocumentor/phpdocumentor": "*", "phpunit/phpunit": "*" }, "type": "library", "autoload": { "classmap": [ "class.phpmailer.php", "class.pop3.php", "class.smtp.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "LGPL-2.1" ], "authors": [ ....下略
Il semble que ce soient les informations sur le package qui vient d'être installé.
Regardez à nouveau ce qu'il y a dans le répertoire du vendeur :
Feng-Hsu-Pingteki-MacBook-Air:2-1a fillano$ tree vendor vendor ├── autoload.php ├── composer │ ├── ClassLoader.php │ ├── autoload_classmap.php │ ├── autoload_namespaces.php │ ├── autoload_real.php │ └── installed.json └── phpmailer └── phpmailer ├── LICENSE ├── PHPMailerAutoload.php ├── README.md ├── changelog.md ├── class.phpmailer.php ├── class.pop3.php ├── class.smtp.php ├── composer.json ├── docs │ ├── Callback_function_notes.txt │ ├── DomainKeys_notes.txt │ ├── Note_for_SMTP_debugging.txt │ ├── extending.html │ ├── faq.html │ ├── generatedocs.sh │ └── pop3_article.txt ...下略
Il semble qu'en plus du répertoire phpmailer où phpmailer est installé, il y ait principalement des fichiers autoload.php et des répertoires composer.
Il s'avère que pour charger un package installé via composer, vous devez d'abord référencer le fichier supplier/autoload.php, puis vous pouvez utiliser phpmailer. Écrivez un programme simple pour le tester :
<?php require 'vendor/autoload.php'; $phpmailer = new PHPMailer;
Il n'y a aucune erreur après l'exécution, ce qui signifie que phpmailer peut se charger normalement... Voyons ensuite les utilisations de ces fichiers.
* composer.json
Pour les utilisateurs, ce fichier est principalement utilisé pour maintenir les dépendances. Ajoutez simplement un objet au fichier dans l'attribut "require", où le nom de l'attribut est le nom du package et la valeur est la version. Le nom du package est divisé en deux parties, la première partie est le fournisseur et la deuxième partie est le nom réel du package, séparé par "". Il existe plusieurs règles pour les versions :
Précisez directement le numéro de version, par exemple, 2.7.3
Après avoir spécifié le numéro de version principal, utilisez "*" pour spécifier le numéro de version mineure, par exemple, 2.7.* signifie que le numéro de version est supérieur ou égal à 2.7.0. Versions inférieures à 2.8.0
utilisez >. ;, >=, !=, <=,
* composer.lock
Après la première installation du package, ce fichier sera généré, qui enregistre les informations du package installé. La vraie fonction de ce fichier est la suivante : s'il y a ce fichier dans le répertoire, lors de l'installation, il ne recherchera pas une version mise à jour, mais l'installera selon la version enregistrée dans ce fichier. Cette conception est importante car la nouvelle version de la suite risque d'être incompatible avec la version actuellement utilisée. Si la même version n'est pas utilisée, il est difficile d'assurer la stabilité du système. Dans le passé, lorsque vous utilisiez pear pour gérer des packages, si vous n'étiez pas prudent, des tragédies causées par les mises à niveau pouvaient survenir. De plus, tant que ce fichier est ajouté à la gestion des versions, tous les répertoires des développeurs auront également ce fichier, donc les versions de packages utilisées par tout le monde seront également cohérentes, ce qui peut réduire l'utilisation de packages pendant le développement. . Problèmes de compatibilité du programme causés par différentes versions.* Annuaire des fournisseurs
所有套件都会放置在这个目录,并且依照
* vendor/autoload.php
只要引用这个档案,就可以载入套件中所有对外公开的类别。基本上每个套件都会定义自己的autoload规则,在安装时,composer会把这些规则加入,这样透过autoload.php就可以直接使用所有已安装的类别。
=====
从这些地方可以看到,Composer这个套件管理工具,在设计上已经做了很周密的考量,只需要简单指定要使用的套件及版本,一个指令就可以安装完毕,引用一个胆案之后就能使用,这样真的非常方便。所以目前几乎所有的程式库以及Framework,应该都逐渐在套用这个工具了。未来在开发PHP程式,恐怕最基本的工具也就是composer。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!