Die folgende Tutorial-Kolumne von Composer führt Sie zur Rezension von Composer. Ich hoffe, dass sie Freunden in Not hilfreich sein wird!
Composer ist ein von der PHP-Community empfohlenes Abhängigkeitsmanagement-Tool. Composer ist für PHP das, was npm für Node ist. Es ist fast eine notwendige Fähigkeit für die moderne PHP-Entwicklung. Dieser Artikel gibt einen kurzen Überblick über verwandte Konzepte und die Verwendung von Composer.
Die verwandten Konzepte sind Frameworks und Bibliotheken. Informationen zum Unterschied zwischen Frameworks und Bibliotheken finden Sie in diesem Artikel, den ich zuvor geschrieben habe.
Erweiterungen und Pakete sind zwei sehr ähnliche Konzepte. In der PHP-Welt können die beiden im Allgemeinen folgendermaßen verstanden und unterschieden werden: Erweiterung und Modul sind gleichwertig und stellen eine Sammlung von Funktionen dar, die in der C-Sprache geschrieben sind. Paket und Bibliothek sind gleichwertig und werden hauptsächlich in der C-Sprache geschrieben von PHP implementierte Funktionen; Erweiterungen werden in Form von dynamischen Linkbibliotheken (DLL oder so) geladen und Pakete werden über require/include geladen. In den meisten Fällen führt die Vermischung der beiden nicht zu Verständnisschwierigkeiten.
Zu den gängigen Erweiterungen gehören GD, ZIP, XML, MySQLi, OPCache usw. Zu den gängigen Paketen gehören PHPMailer, PHPOffice, HTMLPurifier usw.
Bevor Composer populär wurde, waren PEAR und PECL die beiden Tools (Community), die PHP-Entwicklern besser bekannt waren. PEAR ist die Abkürzung für PHP Extension and Application Repository, die offizielle Website ist http://pear.php.net; PECL ist die Abkürzung für PHP Extension Community Library, die offizielle Website ist http://pecl.php.net.
Der Unterschied zwischen den beiden kann durch Erweiterungen und Pakete unterschieden werden: PECL-Hosting-Erweiterungen, der Quellcode sind meist C-Dateien, wie APC, AMPQ usw., die Funktionen sind in PHP implementiert, wie PHP CodeSniffer, HTTP Request usw.; PEAR entspricht dem Pear-Befehl, PECL entspricht dem Pecl-Befehl. Mit diesen beiden Befehlen können Sie Erweiterungen und Pakete installieren und verwalten (der build/pickle
-Unterbefehl von Pear kann auch Erweiterungen in PECL kompilieren). Die beiden ergänzen sich und die offizielle Website beschreibt ihre Beziehung als Schwestern.
PECL ist eine Ergänzung zur offiziellen Erweiterung und ist immer noch aktiv. Einige hervorragende Erweiterungen haben das Potenzial, offizielle Erweiterungen zu werden. Die Swoole-Erweiterung von Meister Han Tianfeng wird ebenfalls im PECL gehostet und ist in China sehr bekannt. Im Vergleich dazu gehört PEAR der Vergangenheit an. Das Aufkommen von PEAR2 und Pyrus (dem PEAR-Paketinstallationstool der nächsten Generation, basierend auf PHP5.3+, offizielle Website http://pear2.php.net) konnte PEAR nicht retten. Der Niedergang von PEAR geht einher mit dem Aufstieg von Composer, dem Protagonisten dieses Artikels. Die Positionierung von
PEAR besteht darin, „wiederverwendbare PHP-Komponenten bereitzustellen“ und Entwicklern zentral Funktionspakete zur Verfügung zu stellen. Die zentralisierte Veröffentlichungsmethode stellt die Qualität des Codes sicher, bringt aber auch Unannehmlichkeiten bei der Wartung mit sich: Nur Pakete, die die Überprüfung bestehen, können veröffentlicht werden, und das Phänomen der Paketveralterung ist schwerwiegend. Die von PEAR installierten Pakete sind global und abhängige Pakete können nicht für einzelne Projekte installiert werden. Nicht privilegierte Benutzer können abhängige Pakete nicht selbst installieren. Zu den weiteren Nachteilen gehört ein schlechtes Abhängigkeitsmanagement. Mit der Popularität von Github und dem Aufkommen von Composer ist die Paketverwaltung in die Composer-Ära eingetreten. PEAR hat seine historische Mission erfüllt und kann beruhigt gehen.
Streng genommen ist Composer als Abhängigkeitsmanagement-Tool und nicht als Paketmanager positioniert. Die chinesische Website von Composer stellt die Arbeit von Composer wie folgt vor:
Composer wird das Problem für Sie folgendermaßen lösen:a) Sie haben ein Projekt, das von mehreren Bibliotheken abhängt.
b) Einige dieser Bibliotheken sind von anderen Bibliotheken abhängig.
c) Du erklärst, worauf Du Dich verlässt.
d) Composer ermittelt, welche Paketversionen installiert werden müssen, und installiert sie (lädt sie in Ihr Projekt herunter).
Composer kann alles, was PEAR kann (einschließlich der Installation von PECL-Erweiterungen), und einige können es besser. Composer installiert das Paket standardmäßig im Projektverzeichnis und normale Benutzer können es normal verwenden (Composer empfiehlt offiziell, Composer-Befehle nicht als Root auszuführen). Offizielle PHP-FIG-Website (https://www.php-fig.org), die die Standardisierung des Codierungsstils in der PHP-Community erheblich fördert. Composer ist eine dezentrale Plattform, auf der jeder Codepakete veröffentlichen kann Paket beim Veröffentlichen, und die Qualität des Pakets wird durch Benutzerabstimmung bestimmt. Als Nachfolger von PEAR hat die Leistung von Composer dem Test der Community standgehalten und ist zum De-facto-Standardtool für das Abhängigkeitsmanagement geworden.
Composer hat mittlerweile ein riesiges Ökosystem gebildet, und mengenmäßig übertreffen die Composer-Pakete PEAR bei weitem. Da jeder Pakete frei und ohne Überprüfung veröffentlichen kann, können Pakete im Composer-Ökosystem versteckte Bedenken wie ungleichmäßige Codequalität, unterschiedliche Codestile und Hintertür-Schwachstellen aufweisen. Darüber hinaus basiert das Abhängigkeitsmanagement von Composer auf Projekten, und dasselbe Paket kann mehrmals auf einem Computer installiert werden. Aber seine Mängel überwiegen insgesamt. Composer hat das PHP-Entwicklungsökosystem stark verändert und den Codeaustausch und die Community-Entwicklung gefördert.
Composer dient zur Verwaltung der Abhängigkeiten von Projekten. Die Datei „composer.json“ im Projekt ist die Grundlage für seine Arbeit. Der wichtigste Teil der Datei ist der Abschnitt „require“, der Composer mitteilt, welche Pakete installiert werden sollen und welche Versionen sie haben, zum Beispiel:
{ "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提供了许多其他命令管理依赖。常用的命令场景包括:查找依赖、引入依赖、安装依赖、更新依赖。分别对应的命令是:
composer search
: 根据关键字查找依赖包,例如查找本人发布的包:composer search tlanyan
。该命令等同于上https://packagist.org进行包查找;composer require
: 引入依赖,声明项目或者全局(global,用户名全局,非系统全局)依赖某个包, 例如声明需要swiftmailer包: composer require [global] "swiftmailer/swiftmailer:dev-master"
;该命令更新composer.json文件,并默认立即安装依赖(--no-update选项可阻止默认安装);效果等同于编辑composer.json文件,然后执行install命令;composer install
:安装composer.json声明的依赖包,最终安装的依赖包版本可能取决于有无composer.lock文件;composer update
: 更新依赖到最新版本,相当于删除composer.lock文件后执行composer install
。以上四条命令涵盖使用Composer的大部分场景。以下是几个常用的辅助命令,与依赖分析相关:
composer info
: 查看安装的依赖包信息,与composer show
等价;composer dumpautoload
: 加-o选项可导出优化的加载器;composer why(-not)
: 查看(不)安装某个包的原因。从拷贝第三方代码到项目中(1994),到PEAR安装依赖包(1999),再到Composer兴起(2012),PHP社区经历了将近20年的探索。PHP这门古老的语言,也在不断的发展更新,在web领域一直发光发热。Composer作为目前PHP包依赖管理的最佳工具,值得每一位PHP开发人员掌握。
Das obige ist der detaillierte Inhalt vonRezensionskomponist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!