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 .

Einige Vorschläge

  1. Deaktivieren Sie xdebug, wenn Sie Composer ausführen.
  2. 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\Squaresrc/Shapes/Square.php .
  • MyVendorName\MyProject\Tests\Shapes\Squaretests/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 von composer update erstellten Datei composer.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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow