Composer ist eine neue Generation von PHP-Abhängigkeitsmanagement-Tools. Zur Einführung und grundlegenden Verwendung können Sie dieses „Einführungs-Tutorial zum PHP Dependency Management Tool Composer“ lesen. In diesem Artikel werden fünf Tipps für die Verwendung von Composer vorgestellt, um Ihre PHP-Entwicklung komfortabler zu gestalten.
1. Nur eine einzelne Bibliothek aktualisieren
Sie möchten nur eine bestimmte Bibliothek aktualisieren und nicht alle ihre Abhängigkeiten aktualisieren:
composer update foo/bar
Darüber hinaus kann dieser Trick auch zur Lösung von „Problemen mit Warnmeldungen“ verwendet werden. Sie müssen Warnmeldungen wie diese gesehen haben:
Warning: The lock file is not up to date with the latest changes in composer.json, you may be getting outdated dependencies, run update to update them.
Oh, was ist schief gelaufen? Keine Panik! Wenn Sie „composer.json“ bearbeiten, sollten Sie so etwas sehen. Wenn Sie beispielsweise Details wie eine Bibliotheksbeschreibung, einen Autor, weitere Parameter oder auch nur ein Leerzeichen hinzufügen oder aktualisieren, ändert sich dadurch die MD5-Summe der Datei. Dann warnt Sie Composer, dass sich der Hash-Wert von dem in Composer.lock aufgezeichneten unterscheidet.
Was sollen wir also tun? Der Update-Befehl kann die Sperrdatei aktualisieren, aber wenn er nur einige Beschreibungen hinzufügt, sollte er keine Bibliotheken aktualisieren. In diesem Fall aktualisieren Sie einfach nichts:
$ composer update nothing Loading composer repositories with package information Updating dependencies Nothing to install or update Writing lock file Generating autoload files
Auf diese Weise aktualisiert Composer nicht die Bibliothek, sondern Composer.lock. Beachten Sie, dass „nothing“ kein Schlüsselwort im Update-Befehl ist. Es gibt einfach nichts, was dieses Paket verursacht. Wenn Sie foobar eingeben, ist das Ergebnis dasselbe.
Wenn die von Ihnen verwendete Composer-Version neu genug ist, können Sie die Option --lock direkt verwenden:
composer update --lock
2. Installieren Sie die Bibliothek, ohne Composer.json zu bearbeiten
Es könnte für Sie zu mühsam sein, „composer.json“ jedes Mal zu ändern, wenn Sie eine Bibliothek installieren. Dann können Sie den Befehl „require“ direkt verwenden.
composer require "foo/bar:1.0.0"
Diese Methode kann auch verwendet werden, um schnell ein neues Projekt zu öffnen. Der Befehl init verfügt über die Option --require, mit der Composer.json automatisch geschrieben werden kann: (Beachten Sie, dass wir -n verwenden, damit wir die Frage nicht beantworten müssen)
$ composer init --require=foo/bar:1.0.0 -n $ cat composer.json { "require": { "foo/bar": "1.0.0" } }
3 Es ist einfach, die Zeit zu
zu initialisieren. Haben Sie den Befehl „create-project“ ausprobiert?
composer create-project doctrine/orm path 2.2.0
Dadurch wird das Repository automatisch geklont und die angegebene Version ausgecheckt. Dieser Befehl ist beim Klonen einer Bibliothek sehr praktisch, da nicht nach dem Original-URI gesucht werden muss.
4. Erwägen Sie das Caching und geben Sie den Dist-Paketen Vorrang.
Composer aus dem letzten Jahr archiviert automatisch das von Ihnen heruntergeladene Dist-Paket. Standardmäßig wird das dist-Paket für getaggte Versionen wie „symfony/symfony“: „v2.1.4“ oder Platzhalter oder Versionsbereiche „2.1.*“ oder „>=2.2,<2.3-dev“ verwendet. (Wenn Sie Stable als Mindeststabilität verwenden.
dist-Paket kann auch für Zweige wie Dev-Master verwendet werden. Mit Github können Sie einen Tarball einer bestimmten Git-Referenz herunterladen. Um die Verwendung zu erzwingen, um sie zu komprimieren Anstatt den Quellcode zu klonen, können Sie die Option --prefer-dist von install und update verwenden.
Hier ist ein Beispiel (ich habe die Option --profile verwendet, um die Ausführungszeit anzuzeigen):
$ composer init --require="twig/twig:1.*" -n --profile Memory usage: 3.94MB (peak: 4.08MB), time: 0s $ composer install --profile Loading composer repositories with package information Installing dependencies - Installing twig/twig (v1.12.2) Downloading: 100% Writing lock file Generating autoload files Memory usage: 10.13MB (peak: 12.65MB), time: 4.71s $ rm -rf vendor $ composer install --profile Loading composer repositories with package information Installing dependencies from lock file - Installing twig/twig (v1.12.2) Loading from cache Generating autoload files Memory usage: 4.96MB (peak: 5.57MB), time: 0.45s
Hier wird das komprimierte Paket von twig/twig:1.12.2 in ~/.composer/cache/files/twig/twig/1.12.2.0-v1.12.2.zip gespeichert und kann sein Wird direkt bei der Neuinstallation des Pakets verwendet.
Wenn Sie die Bibliothek ändern müssen, ist das Klonen des Pakets bequemer Verwenden Sie --prefer-source, um die Auswahl zu erzwingen.
Als nächstes können Sie die Datei ändern:composer update symfony/yaml --prefer-source
composer status -v You have changes in the following dependencies: /path/to/app/vendor/symfony/yaml/Symfony/Component/Yaml: M Dumper.php
$ composer update Loading composer repositories with package information Updating dependencies - Updating symfony/symfony v2.2.0 (v2.2.0- => v2.2.0) The package has modified files: M Dumper.php Discard changes [y,n,v,s,?]?
Vergessen Sie dies schließlich nicht, wenn Sie Code in der Produktionsumgebung bereitstellen Automatisches Laden optimieren:
Sie können bei der Installation von Paketen auch --optimize-autoloader verwenden. Ohne diese Option kann es zu einem Leistungsverlust von 20 % bis 25 % kommen >composer dump-autoload --optimize