Maison  >  Article  >  outils de développement  >  Revoir le compositeur

Revoir le compositeur

藏色散人
藏色散人avant
2020-12-02 15:07:451999parcourir

Ce qui suit est une critique de composer par la colonne tutorielle compositeur. J'espère que cela sera utile aux amis dans le besoin !

Revoir le compositeur

Composer est un outil de gestion des dépendances recommandé par la communauté PHP. Composer est à PHP ce que npm est à Node. C'est presque une compétence nécessaire pour le développement PHP moderne. Cet article passe brièvement en revue les concepts associés et l’utilisation de Composer.

Extensions et packages

Les concepts associés sont des frameworks et des bibliothèques. Pour la différence entre les frameworks et les bibliothèques, vous pouvez consulter cet article que j'ai écrit avant

Extensions et packages Ils. sont deux concepts très similaires. Dans le monde PHP, les deux peuvent généralement être compris et distingués de cette manière : l'extension et le module sont équivalents et constituent un ensemble de fonctions écrites en langage C ; le package et la bibliothèque sont équivalents et sont principalement écrits en langage C. Une collection. des fonctions implémentées par PHP ; les extensions sont chargées sous la forme de bibliothèques de liens dynamiques (dll ou plus), et les packages sont chargés via require/include. La plupart du temps, mélanger les deux ne posera pas de difficulté de compréhension.

Les extensions courantes incluent GD, ZIP, XML, MySQLi, OPCache, etc. Les packages courants incluent PHPMailer, PHPOffice, HTMLPurifier, etc.

PEAR et PECL

Avant que Composer ne devienne populaire, PEAR et PECL étaient les deux outils (communauté) les plus connus des développeurs PHP. PEAR est l'abréviation de PHP Extension and Application Repository, le site officiel est http://pear.php.net ; PECL est l'abréviation de PHP Extension Community Library, le site officiel est http://pecl.

La différence entre les deux peut être distinguée par les extensions et les packages : extensions d'hébergement PECL, les codes sources sont principalement des fichiers C, tels que les packages d'hébergement APC, AMPQ, etc., les fonctions sont implémentées en PHP, tels que PHP CodeSniffer, HTTP Request, etc. ; PEAR correspond à la commande pear, et PECL correspond à la commande pecl Vous pouvez utiliser ces deux commandes pour installer et gérer des extensions et des packages (la sous-commande build/pickle de pear peut également compiler des extensions dans. PECL). Les deux se complètent et le site officiel décrit leur relation comme des sœurs.

PECL est un complément à l'extension officielle et est toujours active. Certaines excellentes extensions ont le potentiel de devenir des extensions officielles. L'extension swoole de Maître Han Tianfeng est également hébergée au PECL et est très connue en Chine. En comparaison, PEAR appartient au passé. L'émergence de PEAR2 et Pyrus (l'outil d'installation de packages PEAR de nouvelle génération, construit sur la base de PHP5.3+, site officiel http://pear2.php.net) n'a pas pu sauver PEAR. Le déclin de PEAR s'accompagne de la montée en puissance de Composer, le protagoniste de cet article.

Le positionnement de PEAR est de « fournir des composants PHP réutilisables » et de fournir aux développeurs des packages de fonctions de manière centralisée. La méthode de publication centralisée garantit la qualité du code, mais entraîne également des inconvénients en termes de maintenance : seuls les packages qui réussissent l'examen peuvent être publiés, et le phénomène d'obsolescence des packages est grave. Les packages installés par PEAR sont globaux et les packages dépendants ne peuvent pas être installés pour des projets individuels. Les utilisateurs non privilégiés ne peuvent pas installer eux-mêmes les packages dépendants. D’autres inconvénients incluent une mauvaise gestion des dépendances. Avec la popularité de Github et l’émergence de Composer, la gestion des packages est entrée dans l’ère Composer. PEAR a accompli sa mission historique et peut repartir l'esprit tranquille.

Composer

À proprement parler, Composer se positionne comme un outil de gestion des dépendances plutôt que comme un gestionnaire de packages. Le site chinois Composer présente le travail de Composer comme suit :

Composer résoudra le problème pour vous comme ceci :

a) Vous avez un projet qui dépend de plusieurs bibliothèques.

b) Certaines de ces bibliothèques dépendent d'autres bibliothèques.

c) Vous déclarez de quoi vous dépendez.

d) Composer déterminera quelles versions des packages doivent être installées et les installera (téléchargez-les dans votre projet).

Composer peut faire tout ce que PEAR peut faire (y compris installer des extensions PECL), et certains peuvent le faire mieux. Composer installe le package dans le répertoire du projet par défaut, et les utilisateurs ordinaires peuvent l'utiliser normalement (Composer recommande officiellement de ne pas exécuter les commandes composer en tant que root) ; Site officiel de PHP-FIG https://www.php-fig.org), qui favorise grandement la standardisation du style de codage dans la communauté PHP ; Composer est une plateforme décentralisée où n'importe qui peut publier des packages de code sans avoir besoin de les réviser ; package lors de sa publication, et la qualité du package est déterminée par le vote des utilisateurs. En tant que successeur de PEAR, les performances de Composer ont résisté au test de la communauté et sont devenues l'outil standard de facto pour la gestion des dépendances.

Composer a désormais formé un énorme écosystème, et en termes de quantité, les packages de Composer dépassent de loin PEAR. Étant donné que n'importe qui peut publier des packages librement sans examen, les packages de l'écosystème Composer peuvent présenter des problèmes cachés tels qu'une qualité de code inégale, des styles de code différents et des vulnérabilités de porte dérobée. De plus, la gestion des dépendances de Composer est basée sur des projets, et le même package peut être installé plusieurs fois sur une machine. Mais ses défauts l’emportent sur ses défauts. Dans l’ensemble, Composer a considérablement modifié l’écosystème de développement PHP et favorisé l’échange de code et le développement de communautés.

Utilisation de Composer

Composer est né pour gérer les dépendances des projets, et le fichier composer.json du projet est la base de son travail. La partie la plus importante du fichier est la section require, qui indique à Composer quels packages il s'attend à installer et leurs versions, par exemple :

{
    "name": "tlanyan/foo",
    "version": "1.0.0",
    ....
    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": ">=2.0.6",
        "yiisoft/yii2-swiftmailer": "*",
        "yiisoft/yii2-redis": ">=2.0.0",
        "smarty/smarty": "< =3.1.25",
        "yiisoft/yii2-smarty": ">=2.0.0",
        "phpoffice/phpexcel": ">=1.8.0",
        "tecnickcom/tcpdf": "~6.2.0"
    },
    ....
}

然后运行composer install命令,Composer会自动分析依赖,安装最合适的包到vendor目录下。加-v(-vv, -vvv)选项会打印命令执行过程中的详细信息。安装完毕后,vendor目录下会生成autoload.php文件。在项目的入口文件中包含此文件: require __DIR__ . "/vendor/autoload.php";,接下来便可在项目的任何地方引用依赖包中的接口和类。

install命令,Composer提供了许多其他命令管理依赖。常用的命令场景包括:查找依赖、引入依赖、安装依赖、更新依赖。分别对应的命令是:

  1. composer search: 根据关键字查找依赖包,例如查找本人发布的包:composer search tlanyan。该命令等同于上https://packagist.org进行包查找;
  2. composer require: 引入依赖,声明项目或者全局(global,用户名全局,非系统全局)依赖某个包, 例如声明需要swiftmailer包: composer require [global] "swiftmailer/swiftmailer:dev-master";该命令更新composer.json文件,并默认立即安装依赖(--no-update选项可阻止默认安装);效果等同于编辑composer.json文件,然后执行install命令;
  3. composer install:安装composer.json声明的依赖包,最终安装的依赖包版本可能取决于有无composer.lock文件;
  4. composer update: 更新依赖到最新版本,相当于删除composer.lock文件后执行composer install

以上四条命令涵盖使用Composer的大部分场景。以下是几个常用的辅助命令,与依赖分析相关:

  1. composer info: 查看安装的依赖包信息,与composer show等价;
  2. composer dumpautoload: 加-o选项可导出优化的加载器;
  3. composer why(-not): 查看(不)安装某个包的原因。

总结

从拷贝第三方代码到项目中(1994),到PEAR安装依赖包(1999),再到Composer兴起(2012),PHP社区经历了将近20年的探索。PHP这门古老的语言,也在不断的发展更新,在web领域一直发光发热。Composer作为目前PHP包依赖管理的最佳工具,值得每一位PHP开发人员掌握。

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer