Composer ist ein Abhängigkeitsverwaltungstool für PHP, mit dem die von einem Projekt benötigten Bibliotheken und ihre Versionen verwaltet werden.

Composer definiert Abhängigkeiten über die Datei composer.json und übernimmt automatisch die Installation und Aktualisierungen.

Standardmäßig wird Composer nicht global installiert, sondern in einem bestimmten Verzeichnis des jeweiligen Projekts (z. B. vendor).

Composer erfordert PHP 5.3.2+ oder höher, und openssl muss aktiviert sein.

Composer kann auf den Plattformen Windows, Linux und OSX ausgeführt werden.

Hauptfunktionen

  1. Abhängigkeitsverwaltung: Automatische Installation und Verwaltung der vom Projekt benötigten Bibliotheken.

  2. Autoloading: Autoload-Dateien generieren, um das Laden von Klassen zu vereinfachen.

  3. Versionskontrolle: Unterstützt semantische Versionierung, um die Kompatibilität abhängiger Bibliotheken sicherzustellen.

  4. Skriptunterstützung: Ermöglicht das Ausführen benutzerdefinierter Skripte bei bestimmten Ereignissen (wie install oder update).

Composer generiert die Datei vendor/autoload.php. Binden Sie sie einfach in das Projekt ein, um Klassen automatisch zu laden:

require 'vendor/autoload.php';

Composer installieren

Windows-Plattform

Unter Windows müssen wir nurComposer-Setup.exeherunterladen und dann Schritt für Schritt installieren.

Beachten Sie, dass Sie die openssl-Konfiguration aktivieren müssen. Öffnen Sie php.ini im php-Verzeichnis, undextension=php_openssl.dllEntfernen Sie einfach das Semikolon davor.

Nach erfolgreicher Installation können wir den folgenden Befehl in der Eingabeaufforderung (cmd) eingeben:composer --versionum zu prüfen, ob die Installation erfolgreich war:

Als Nächstes können wir auf den vollständigen Composer-Mirror von Alibaba Cloud umstellen:

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

Konfiguration aufheben:

composer config -g --unset repos.packagist

Projektkonfiguration

Ändert nur die Konfiguration des aktuellen Projekts; nur das aktuelle Projekt kann diese Mirror-Adresse verwenden:

composer config repo.packagist composer https://mirrors.aliyun.com/composer/

Konfiguration aufheben:

composer config --unset repos.packagist

Debugging

Das Hinzufügen von -vvv zum Composer-Befehl gibt detaillierte Informationen aus. Der Befehl lautet wie folgt:

composer -vvv require alibabacloud/sdk

Auf Probleme gestoßen?

1. Es wird empfohlen, die Composer-Version zuerst auf die neueste zu aktualisieren:

composer self-update

2. Führen Sie den Diagnosebefehl aus:

composer diagnose

3. Leeren Sie den Cache:

composer clear

4. Wenn das Projekt zuvor aus anderen Quellen installiert wurde, müssen Sie die Datei composer.lock aktualisieren, indem Sie folgenden Befehl ausführen:

composer update --lock

5. Versuchen Sie es noch einmal

Linux-Plattform

Unter Linux können Sie die folgenden Befehle zur Installation verwenden:

# php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
# php composer-setup.php

All settings correct for using Composer
Downloading...

Composer (version 1.6.5) successfully installed to: /root/composer.phar
Use it: php composer.phar

Verschieben Sie composer.phar, damit composer global aufgerufen werden kann:

# mv composer.phar /usr/local/bin/composer

Wechseln Sie zu einem inländischen Mirror:

# composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

Composer aktualisieren:

# composer selfupdate

Mac OS-System

Unter Mac OS können Sie die folgenden Befehle zur Installation verwenden:

$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
$ composer --version
Composer version 1.7.2 2018-08-16 16:57:12

Wechseln Sie zu einem inländischen Mirror:

$ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

Composer aktualisieren:

$ composer selfupdate

Composer verwenden

Um Composer zu verwenden, müssen wir zunächst eine Datei composer.json im Projektverzeichnis erstellen. Die Datei beschreibt die Abhängigkeiten des Projekts.

Das Dateiformat ist wie folgt:

{
    "require": {
        "monolog/monolog": "1.2.*"
    }
}

Die obige Datei gibt an, dass wir eine beliebige Version von monolog ab 1.2 herunterladen müssen.

Als Nächstes führen Sie einfach den folgenden Befehl aus, um die Abhängigkeitspakete zu installieren:

composer install

require-Befehl

Zusätzlich zur Verwendung des install-Befehls können wir auch den require-Befehl verwenden, um eine Abhängigkeit schnell zu installieren, ohne die Abhängigkeitsinformationen manuell zu composer.json hinzuzufügen:

$ composer require monolog/monolog

Composer sucht zunächst eine geeignete Version, aktualisiert dann die Datei composer.json, fügt die relevanten Informationen des Pakets monolog/monolog unter require hinzu, lädt die zugehörigen Abhängigkeiten herunter und installiert sie und aktualisiert schließlich die Datei composer.lock und generiert die PHP-Autoload-Datei.

update-Befehl

Der update-Befehl wird verwendet, um alle Pakete im Projekt oder bestimmte Pakete zu aktualisieren:

# 更新所有依赖
$ composer update

# 更新指定的包
$ composer update monolog/monolog

# 更新指定的多个包
$ composer update monolog/monolog symfony/dependency-injection

# 还可以通过通配符匹配包
$ composer update monolog/monolog symfony/*

Beachten Sie, dass die Versionen, auf die ein Paket aktualisiert werden kann, durch die Versionsbeschränkungen eingeschränkt sind; das Paket wird nicht über den von den Beschränkungen erlaubten Bereich hinaus aktualisiert. Wenn beispielsweise die Versionsbeschränkung für ein Paket in composer.json ^1.10 lautet und die neueste Version 2.0 ist, kann der update-Befehl das Paket nicht auf 2.0 aktualisieren; es kann nur auf eine 1.x-Version aktualisiert werden. Zu Versionsbeschränkungen siehe die spätere Einführung.

remove-Befehl

Der remove-Befehl wird verwendet, um ein Paket und seine Abhängigkeiten zu entfernen (vorausgesetzt, die Abhängigkeiten werden nicht von anderen Paketen verwendet). Wenn eine Abhängigkeit von einem anderen Paket verwendet wird, kann sie nicht entfernt werden:

$ composer remove monolog/monolog
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 0 updates, 2 removals
  - Removing psr/log (1.0.2)
  - Removing monolog/monolog (1.23.0)
Generating autoload files

search-Befehl

Der search-Befehl kann nach Paketen suchen:

$ composer search monolog

Dieser Befehl gibt das Paket und seine Beschreibung aus. Wenn Sie nur den Paketnamen ausgeben möchten, können Sie den Parameter--only-nameverwenden:

$ composer search --only-name monolog

show-Befehl

Der show-Befehl kann Informationen über die vom aktuellen Projekt verwendeten Pakete auflisten:

# 列出所有已经安装的包
$ composer show

# 可以通过通配符进行筛选
$ composer show monolog/*

# 显示具体某个包的信息
$ composer show monolog/monolog

Grundlegende Einschränkungen

Exakte Version

Wir können Composer die exakte zu installierende Version mitteilen, zum Beispiel: 1.0.2, wodurch die Version 1.0.2 angegeben wird.

Range

Verwenden Sie Vergleichsoperatoren, um den Bereich eines Pakets anzugeben. Diese Operatoren umfassen:>,>=,<,<=,!=。

Sie können mehrere Bereiche definieren. Verwenden Sie Leerzeichen oder Kommas , für logisches AND und doppelte vertikale Balken || für logisches OR. Die Priorität von AND ist höher als die von OR. Beispiel:

  • >=1.0
  • >=1.0 <2.0
  • >=1.0 <1.1 || >=1.2

Wir können auch einen Bindestrich-verwenden, um einen Versionsbereich anzugeben.

Die linke Seite des Bindestrichs zeigt>=die Version an. Wenn die Version auf der rechten Seite keine vollständige Versionsnummer ist, wird sie mithilfe von Wildcards vervollständigt. Zum Beispiel1.0 - 2.0ist äquivalent zu>=1.0.0 <2.1(2.0ist äquivalent zu2.0.*), und1.0.0 - 2.1.0ist äquivalent zu>=1.0.0 <=2.1.0。

Platzhalter

Sie können Wildcards verwenden, um Versionen festzulegen.1.0.*ist äquivalent zu>=1.0 <1.1。
Beispiel:1.0.*

Tilde ~

Lassen Sie uns zunächst die Verwendung des Operators ~ anhand des folgenden Beispiels erklären:~1.2ist äquivalent zu>=1.2 <2.0.0, und~1.2.3ist äquivalent zu>=1.2.3 <1.3.0. Für Projekte, dieSemantic Versioningals Versionierungsstandard verwenden, ist diese Versionsbeschränkungsmethode sehr praktisch. Zum Beispiel~1.2definiert die minimale Nebenversion, und Sie können problemlos auf jede Version unter 2.0 aktualisieren, denn gemäßSemantic Versioningder Versionsdefinition sollten Upgrades von Nebenversionen keine Kompatibilitätsprobleme verursachen. Einfach ausgedrückt,~definiert die Mindestversion und erlaubt es, die letzte Ziffer der Versionsnummer zu erhöhen (falls Sie es nicht verstanden haben, sehen Sie sich bitte die vorherigen Beispiele noch einmal an).
Beispiel:~1.2

Beachten Sie, dass, wenn ~ auf die Hauptversionsnummer wirkt, zum Beispiel~1, nach dem oben Gesagten könnte Composer Hauptversionen nach Version 1 installieren, aber tatsächlich~1wird behandelt als~1.0, sodass nur Nebenversionen erhöht werden können, nicht die Hauptversion.

Caret ^

^Das Verhalten des Operators steht in engem Zusammenhang mitSemantic Versioning. Es ermöglicht das Aktualisieren von Versionen auf sichere Versionen. Zum Beispiel,^1.2.3ist äquivalent zu>=1.2.3 <2.0.0, da Versionen vor 2.0 keine Kompatibilitätsprobleme haben sollten. Bei Versionen vor 1.0 berücksichtigt diese Einschränkung ebenfalls die Sicherheit, zum Beispiel^0.3wird behandelt als>=0.3.0 <0.4.0.
Beispiel:^1.2.3


Versionsstabilität

Wenn Sie die Stabilität einer Version nicht explizit angeben, verwendet Composer intern standardmäßig-devoder-stable. Zum Beispiel:

Einschränkung Interne Einschränkung
1.2.3 =1.2.3.0-stable
>1.2 >1.2.0.0-stable
>=1.2 >=1.2.0.0-dev
>=1.2-stable >=1.2.0.0-stable
<1.3 <1.3.0.0-dev
<=1.3 <=1.3.0.0-stable
1 - 2 >=1.0.0.0-dev <3.0.0.0-dev
~1.3 >=1.3.0.0-dev <2.0.0.0-dev
1.4.* >=1.4.0.0-dev <1.5.0.0-dev
Beispiel:1.0 - 2.0Wenn Sie angeben möchten, dass nur stabile Versionen akzeptiert werden, können Sie ein Suffix an die Version anhängen-stable。

minimum-stabilityDas Konfigurationselement definiert das Standardverhalten für die Stabilitätsauswahl, wenn ein Paket eine Version wählt. Der Standardwert iststable. Seine Werte sind wie folgt (nach Stabilität sortiert):dev,alpha,beta,RCundstableZusätzlich zum Ändern dieser Konfiguration, um das Standardverhalten zu ändern, können wir auchStabilitäts-Flag(zum Beispiel@stableund@dev), um eine Version mit einer anderen Stabilität als in der Standardkonfiguration zu installieren. Zum Beispiel:

{
    "require": {
        "monolog/monolog": "1.0.*@beta",
        "acme/foo": "@dev"
    }
}