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.json
nicht 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.lock
angegebenen Pakete
Wann zu installieren und wann zu aktualisieren
composer update
wird hauptsächlich in der Entwicklungsphase verwendet, um unsere Projektpakete zu aktualisieren.composer install
wird 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 update
erstellten Dateicomposer.lock
gespeichert 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