PHP
Composer-Abhängigkeitsmanager
Suche…
Einführung
Composer ist der am häufigsten verwendete Abhängigkeitsmanager von PHP. Es ist analog zu npm in Node, pip für Python oder NuGet für .NET.
Syntax
- php path / to / composer.phar [Befehl] [Optionen] [Argumente]
Parameter
| Parameter | Einzelheiten |
|---|---|
| Lizenz | Definiert den Lizenztyp, den Sie im Projekt verwenden möchten. |
| Autoren | Definiert die Autoren des Projekts sowie die Autorendetails. |
| Unterstützung | Definiert die Support-E-Mails, den IRC-Kanal und verschiedene Links. |
| benötigen | Definiert die tatsächlichen Abhängigkeiten sowie die Paketversionen. |
| Anforderungs-dev | Definiert die Pakete, die zum Entwickeln des Projekts erforderlich sind. |
| vorschlagen | Definiert die Paketvorschläge, dh Pakete, die helfen können, wenn sie installiert sind. |
| Autoload | Definiert die Autoloading-Richtlinien des Projekts. |
| autoload-dev | Definiert die Autoloading-Richtlinien für die Projektentwicklung. |
Bemerkungen
Das automatische Laden funktioniert nur für Bibliotheken, die Informationen zum automatischen Laden angeben. Die meisten Bibliotheken halten sich an einen Standard wie PSR-0 oder PSR-4 .
Nützliche Links
- Packagist - Durchsuchen Sie die verfügbaren Pakete (die Sie mit Composer installieren können).
- Offizielle Dokumentation
- Offizieller Leitfaden "Erste Schritte"
Einige Vorschläge
- Deaktivieren Sie xdebug, wenn Sie Composer ausführen.
- Führen Sie Composer nicht als
root. Pakete sind nicht zu vertrauen.
Was ist Komponist?
Composer ist ein Abhängigkeits- / Paketmanager für PHP. Damit können Sie Ihre Projektabhängigkeiten installieren, verfolgen und aktualisieren. Composer sorgt auch für das automatische Laden der Abhängigkeiten, auf die Ihre Anwendung angewiesen ist. So können Sie die Abhängigkeiten in Ihrem Projekt problemlos nutzen, ohne sich Gedanken darüber machen zu müssen, ob sie oben in einer bestimmten Datei stehen.
Abhängigkeiten für Ihr Projekt werden in einer composer.json Datei aufgelistet, die sich normalerweise in Ihrem Projektstammverzeichnis befindet. Diese Datei enthält Informationen zu den erforderlichen Versionen von Paketen für die Produktion und auch für die Entwicklung.
Eine vollständige Übersicht über das composer.json Schema finden Sie auf der Composer-Website .
Diese Datei kann manuell mit einem beliebigen Texteditor oder automatisch über die Befehlszeile bearbeitet werden, z. B. über composer require <package> oder composer require-dev <package> .
Um Composer in Ihrem Projekt verwenden zu können, müssen Sie die Datei composer.json erstellen. Sie können es entweder manuell erstellen oder einfach composer init ausführen. Nachdem Sie laufen composer init in Ihrem Terminal, es wird Ihnen einige grundlegende Informationen über Ihr Projekt stellen: Paketname (Verkäufer / Paket - zB laravel/laravel ), Beschreibung - optional, Autor und einige andere Informationen wie Mindest Stabilität, Lizenz und Required Pakete.
Der require in Ihrer Datei composer.json gibt an, von welchen Paketen Ihr Projekt abhängt. require nimmt ein Objekt , das Paketnamen (zB Monolog / Monolog) auf Version Constraints (zB 1,0. *) abbildet.
{
"require": {
"composer/composer": "1.2.*"
}
}
Um die definierten Abhängigkeiten zu installieren, müssen Sie den composer install ausführen. Anschließend werden die definierten Pakete gefunden, die der angegebenen version , und in das vendor heruntergeladen. Es ist eine Konvention, Code von Drittanbietern in ein Verzeichnis mit dem Namen vendor .
Sie werden feststellen, dass der install auch eine composer.lock Datei erstellt hat.
Eine composer.lock Datei wird automatisch von Composer generiert. Diese Datei wird verwendet, um die aktuell installierten Versionen und den Status Ihrer Abhängigkeiten zu verfolgen. Beim Ausführen der composer install werden Pakete genau in dem Zustand installiert, der in der Sperrdatei gespeichert ist.
Autoloading mit Composer
Composer bietet zwar ein System zum Verwalten von Abhängigkeiten für PHP-Projekte (z. B. von Packagist ), kann jedoch auch als Autoloader dienen, der angibt, wo nach bestimmten Namespaces gesucht werden soll oder generische Funktionsdateien enthalten soll.
Es beginnt mit der Datei composer.json :
{
// ...
"autoload": {
"psr-4": {
"MyVendorName\\MyProject": "src/"
},
"files": [
"src/functions.php"
]
},
"autoload-dev": {
"psr-4": {
"MyVendorName\\MyProject\\Tests": "tests/"
}
}
}
Diese Konfiguration Code stellt sicher , dass alle Klassen im Namensraum MyVendorName\MyProject auf die abgebildet werden src - Verzeichnis und alle Klassen in MyVendorName\MyProject\Tests an die tests Verzeichnis (relativ zum Stammverzeichnis). Es wird auch automatisch die Datei functions.php .
Nachdem Sie dies in Ihre composer.json Datei geschrieben haben, führen Sie composer update in einem Terminal aus, damit composer die Abhängigkeiten und die Sperrdatei aktualisiert und die autoload.php Datei generiert. Bei der Bereitstellung in einer Produktionsumgebung würden Sie den composer install --no-dev . Die Datei autoload.php befindet sich im vendor , das in dem Verzeichnis generiert werden soll, in dem sich composer.json befindet.
Sie sollten require eine Zeile ähnlich mit , dass unten in dem Lebenszyklus Ihrer Anwendung diese Datei früh zu einem Setup - Punkt.
require_once __DIR__ . '/vendor/autoload.php';
Sobald die Datei autoload.php enthalten ist, werden alle Abhängigkeiten autoload.php , die Sie in der Datei composer.json .
Einige Beispiele für den Klassenpfad zur Verzeichniszuordnung:
-
MyVendorName\MyProject\Shapes\Square➔src/Shapes/Square.php. -
MyVendorName\MyProject\Tests\Shapes\Square➔tests/Shapes/Square.php.
Vorteile der Verwendung von Composer
Composer verfolgt, welche Versionen von Paketen Sie in einer Datei namens composer.lock installiert haben, die der Versionskontrolle übergeben werden soll. Wenn das Projekt geklont wird, werden durch das Ausführen von composer install install alle Abhängigkeiten heruntergeladen und installiert .
Composer beschäftigt sich mit PHP-Abhängigkeiten auf Projektbasis. Dies macht es einfach, mehrere Projekte auf einem Rechner zu haben, die von separaten Versionen eines PHP-Pakets abhängen.
Komponentenspuren, deren Abhängigkeiten nur für Entwicklungsumgebungen vorgesehen sind
composer require --dev phpunit/phpunit
Composer bietet einen Autoloader, der es sehr einfach macht, mit jedem Paket zu beginnen. Nach der Installation von Goutte mit composer require fabpot/goutte können Sie beispielsweise sofort mit der Verwendung von Goutte in einem neuen Projekt beginnen:
<?php
require __DIR__ . '/vendor/autoload.php';
$client = new Goutte\Client();
// Start using Goutte
Mit Composer können Sie ein Projekt einfach auf die neueste Version aktualisieren, die von composer.json zugelassen wird. Z.B. composer update fabpot/goutte oder zum Aktualisieren der Abhängigkeiten Ihres Projekts: composer update .
Unterschied zwischen "Composer Install" und "Composer Update"
composer update
composer update aktualisiert unsere Abhängigkeiten, wie sie in composer.json angegeben sind.
Wenn unser Projekt beispielsweise diese Konfiguration verwendet:
"require": {
"laravelcollective/html": "2.0.*"
}
Angenommen, wir haben die 2.0.1 Version des Pakets tatsächlich installiert, führt das Ausführen des composer update zu einem Upgrade dieses Pakets (z. B. auf 2.0.2 , falls es bereits veröffentlicht wurde).
Im Einzelnen wird das composer update :
- Lesen Sie
composer.json - Entfernen Sie installierte Pakete, die in
composer.jsonnicht mehr benötigt werden - Überprüfen Sie die Verfügbarkeit der neuesten Versionen unserer erforderlichen Pakete
- Installieren Sie die neuesten Versionen unserer Pakete
- Aktualisieren Sie
composer.lock, um die Version der installierten Pakete zu speichern
composer install
composer install installiert alle Abhängigkeiten, wie in der Datei composer.lock angegeben, in der angegebenen Version (gesperrt), ohne etwas zu aktualisieren.
Im Detail:
- Lesen Sie die Datei
composer.lock - Installieren Sie die in der Datei
composer.lockangegebenen Pakete
Wann zu installieren und wann zu aktualisieren
composer updatewird hauptsächlich in der Entwicklungsphase verwendet, um unsere Projektpakete zu aktualisieren.composer installwird hauptsächlich in der Bereitstellungsphase verwendet, um unsere Anwendung auf einem Produktionsserver oder in einer Testumgebung zu installieren. Dabei werden dieselben Abhängigkeiten verwendet, die in der voncomposer updateerstellten Dateicomposer.lockgespeichert sind.
Verfügbare Befehle für den Komponisten
| Befehl | Verwendungszweck |
|---|---|
| Über | Kurze Informationen zu Composer |
| Archiv | Erstellen Sie ein Archiv dieses Composer-Pakets |
| Durchsuche | Öffnet die Repository-URL oder Startseite des Pakets in Ihrem Browser. |
| Cache leeren | Löscht den internen Paket-Cache des Komponisten. |
| Cache leeren | Löscht den internen Paket-Cache des Komponisten. |
| Konfig | Legen Sie die Konfigurationsoptionen fest |
| Projekt erstellen | Neues Projekt aus einem Paket in das angegebene Verzeichnis erstellen. |
| hängt davon ab | Zeigt an, welche Pakete dazu führen, dass das angegebene Paket installiert wird |
| diagnostizieren | Diagnoset das System, um häufig auftretende Fehler zu erkennen. |
| dump-autoload | Gibt den Autoloader aus |
| dumpautoload | Gibt den Autoloader aus |
| exec | Führe ein verkauftes Binär- / Skript aus |
| global | Ermöglicht das Ausführen von Befehlen im globalen Composer-Verzeichnis ($ COMPOSER_HOME). |
| Hilfe | Zeigt die Hilfe für einen Befehl an |
| Zuhause | Öffnet die Repository-URL oder Startseite des Pakets in Ihrem Browser. |
| Info | Informationen zu Paketen anzeigen |
| drin | Erstellt eine grundlegende composer.json-Datei im aktuellen Verzeichnis. |
| Installieren | Installiert die Projektabhängigkeiten aus der Datei composer.lock, falls vorhanden, oder greift auf die Datei composer.json zurück. |
| Lizenzen | Informationen zu Lizenzen für Abhängigkeiten anzeigen |
| Liste | Listet Befehle auf |
| veraltet | Zeigt eine Liste der installierten Pakete an, für die Updates verfügbar sind, einschließlich der neuesten Version. |
| verbietet | Zeigt an, welche Pakete die Installation des angegebenen Pakets verhindern |
| Löschen | Entfernt ein Paket aus dem Require oder Request-Dev |
| benötigen | Fügt Ihrem composer.json die erforderlichen Pakete hinzu und installiert sie |
| Skript ausführen | Führen Sie die in composer.json definierten Skripts aus. |
| Suche | Suche nach Paketen |
| Selbstaktualisierung | Aktualisiert composer.phar auf die neueste Version. |
| Selbstaktualisierung | Aktualisiert composer.phar auf die neueste Version. |
| Show | Informationen zu Paketen anzeigen |
| Status | Zeigt eine Liste lokal geänderter Pakete an |
| schlägt vor | Paketvorschläge anzeigen |
| aktualisieren | Aktualisiert Ihre Abhängigkeiten auf die neueste Version gemäß composer.json und aktualisiert die Datei composer.lock. |
| bestätigen | Überprüft einen composer.json und einen composer.lock |
| Warum | Zeigt an, welche Pakete dazu führen, dass das angegebene Paket installiert wird |
| warum nicht | Zeigt an, welche Pakete die Installation des angegebenen Pakets verhindern |
Installation
Sie können Composer lokal, als Teil Ihres Projekts oder global als systemweit ausführbare Datei installieren.
Örtlich
Führen Sie zur Installation diese Befehle in Ihrem Terminal aus.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# to check the validity of the downloaded installer, check here against the SHA-384:
# https://composer.github.io/pubkeys.html
php composer-setup.php
php -r "unlink('composer-setup.php');"
Dadurch wird composer.phar (eine PHP-Archivdatei) in das aktuelle Verzeichnis heruntergeladen. Jetzt können Sie php composer.phar ausführen, um Composer zu verwenden, z
php composer.phar install
Global
Um Composer global zu verwenden, platzieren Sie die Datei composer.phar in einem Verzeichnis, das Teil Ihres PATH
mv composer.phar /usr/local/bin/composer
Jetzt können Sie composer anstelle von php composer.phar überall verwenden, z
composer install