Einführung
Composer ist ein beliebtes Abhängigkeitsmanagement-Tool für PHP, das hauptsächlich zur Erleichterung der Installation und Aktualisierung von Projektabhängigkeiten entwickelt wurde. Es prüft, von welchen anderen Paketen ein bestimmtes Projekt abhängt, und installiert sie für Sie. Dabei werden die entsprechenden Versionen verwendet, die den Projektanforderungen entsprechen.
Dieses Tutorial zeigt, wie Sie Composer auf einem Debian 8-Server installieren und starten.
Voraussetzungen
Für dieses Tutorial benötigen Sie:
-
Ein Debian 8-Server mit einem Benutzer, der kein Root-Sudo ist (siehe https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-8[Initial Server Setup with Debian 8)
Schritt 1 - Installieren der Abhängigkeiten
Bevor wir Composer herunterladen und installieren, müssen wir sicherstellen, dass auf unserem Server alle erforderlichen Abhängigkeiten installiert sind.
Aktualisieren Sie zunächst den Paketmanager-Cache.
sudo apt-get update
Lassen Sie uns nun die Abhängigkeiten installieren. Wir benötigen "+ curl ", um Composer und " php5-cli ", ein PHP-Paket, herunterzuladen, um es zu installieren und auszuführen. Composer verwendet ` git +`, ein Versionskontrollsystem, um Projektabhängigkeiten herunterzuladen. Mit diesem Befehl können Sie alle drei Pakete gleichzeitig installieren:
sudo apt-get install curl php5-cli git
Nachdem die wesentlichen Abhängigkeiten installiert sind, fahren wir fort und installieren Composer selbst.
Schritt 2 - Composer herunterladen und installieren
Wir folgen den Anweisungen in der offiziellen Dokumentation von Composer mit einer kleinen Änderung, um Composer global unter "+ / usr / local / bin +" zu installieren. Dadurch kann jeder Benutzer auf dem Server Composer verwenden.
Laden Sie das Installationsprogramm in das Verzeichnis "+ / tmp +" herunter.
php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"
Besuchen Sie Kneipen- und Signaturseite von Composer und kopieren Sie die SHA-384-Zeichenfolge oben. Führen Sie dann den folgenden Befehl aus, indem Sie "++" durch die Zeichenfolge ersetzen, die Sie kopiert haben.
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"
Dieser Befehl überprüft den Hash der heruntergeladenen Datei mit dem richtigen Hash von der Composer-Website. Wenn dies zutrifft, wird * Installer checked * gedruckt. Wenn dies nicht der Fall ist, wird * Installer corrupt * ausgegeben. In diesem Fall sollten Sie überprüfen, ob Sie die SHA-384-Zeichenfolge korrekt kopiert haben.
Als Nächstes installieren wir Composer. Um es global unter "+ / usr / local / bin " zu installieren, verwenden wir das Flag " - install-dir ". ` - Dateiname +` teilt dem Installationsprogramm den Namen der ausführbaren Datei von Composer mit. So machen Sie das in einem Befehl:
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
Es wird eine Nachricht wie die folgende angezeigt:
OutputAll settings correct for using Composer
Downloading...
Composer (version 1.3.2) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer
Sie können überprüfen, ob Composer korrekt installiert ist, indem Sie die Version überprüfen.
composer --version
Sie sollten die installierte Version sehen. Zum Zeitpunkt dieses Schreibens ist die Version:
Komponistenversion
Composer version 1.3.2 2017-01-27 18:23:41
Schließlich können Sie das Installationsskript sicher entfernen, da Sie es nicht mehr benötigen.
rm /tmp/composer-setup.php
Der Composer ist nun eingerichtet und wird ausgeführt. Er wartet darauf, von Ihrem Projekt verwendet zu werden. Im nächsten Abschnitt generieren Sie die Datei "+ composer.json", die die PHP-Bibliotheken enthält, von denen Ihr Projekt abhängt.
Schritt 3 - Generieren der composer.json-Datei
Um Composer für ein Projekt verwenden zu können, benötigen Sie eine "+ composer.json" -Datei. Die Datei + composer.json
teilt Composer mit, welche Abhängigkeiten für Ihr Projekt heruntergeladen werden müssen und welche Versionen jedes Pakets installiert werden dürfen. Dies ist wichtig, damit Ihr Projekt konsistent bleibt und keine instabilen Versionen installiert werden, die möglicherweise Probleme mit der Abwärtskompatibilität verursachen können.
Sie müssen diese Datei nicht manuell erstellen. Wenn Sie dies tun, können Sie leicht auf Syntaxfehler stoßen. Composer generiert automatisch die Datei "+ composer.json", wenn Sie Ihrem Projekt eine Abhängigkeit hinzufügen, indem Sie den Befehl "+ required" verwenden. Auf die gleiche Weise können auch zusätzliche Abhängigkeiten hinzugefügt werden, ohne dass diese Datei manuell bearbeitet werden muss.
Das Installieren eines Pakets mit Composer als Abhängigkeit in einem Projekt umfasst normalerweise die folgenden Schritte:
-
Identifizieren Sie, welche Art von Bibliothek die Anwendung benötigt
-
Durchsuchen Sie eine geeignete Open Source-Bibliothek unter Packagist.org, dem offiziellen Repository für Composer
-
Wählen Sie das Paket, von dem Sie abhängen möchten
-
Führen Sie "+ composer require" aus, um die Abhängigkeit in die Datei "+ composer.json" aufzunehmen, und installieren Sie das Paket
Wir werden sehen, wie dies in der Praxis mit einer einfachen Demo-Anwendung funktioniert.
Das Ziel dieser Anwendung ist es, einen bestimmten Satz in einen slug umzuwandeln, der eine URL-freundliche Zeichenfolge ist. Hiermit werden Seitentitel in URL-Pfade konvertiert (wie der letzte Teil der URL für dieses Lernprogramm).
Beginnen wir mit der Erstellung eines Verzeichnisses für das Projekt. Wir nennen es * slugify *:
cd ~
mkdir slugify
cd slugify
Als Nächstes suchen wir nach der Bibliothek, die wir verwenden müssen.
Auf Packagist nach Paketen suchen
Als Nächstes suchen wir unter Packagist nach einem Paket, mit dessen Hilfe Schnecken generiert werden können. Wenn Sie nach "slug" suchen, wird eine Liste von Paketen angezeigt. Auf der rechten Seite jedes Pakets in der Liste werden zwei Zahlen angezeigt: Die obere Zahl gibt an, wie oft das Paket installiert wurde, und die untere Zahl gibt an, wie oft ein Paket auf GitHub mit einem Stern versehen wurde.
Im Allgemeinen sind Pakete mit mehr Installationen und Sternen stabiler, da sie von vielen Benutzern verwendet werden. Es ist auch wichtig, die Paketbeschreibung zu überprüfen, um sicherzustellen, dass das Paket wirklich das ist, wonach Sie suchen.
Was wir brauchen, ist ein einfacher String-to-Slug-Konverter. Als Beispiel verwenden wir hier das Paket "+ cocur / slugify +". Es scheint eine gute Übereinstimmung zu sein, da es eine angemessene Menge an Installationen und Sternen hat.
Sie werden feststellen, dass die Pakete in Packagist einen Herstellernamen und einen Paketnamen haben. Jedes Paket hat eine eindeutige Kennung (einen Namespace) im selben Format, das GitHub für seine Repositorys verwendet: + vendor / package +
. Die Bibliothek, die wir installieren möchten, verwendet den Namespace "+ cocur / slugify +". Der Namespace ist das, was wir benötigen, um das Paket in unserem Projekt zu benötigen.
Nachdem wir die gewünschte Bibliothek identifiziert haben, fügen wir sie der Datei "+ composer.json" hinzu.
Paket anfordern
Wir können + composer require +
ausführen, um die Bibliothek als Abhängigkeit einzuschließen, und auch die Datei + composer.json +
für das Projekt generieren:
composer require
OutputUsing version ^2.3 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing cocur/slugify (v2.3) Downloading: 100%
Writing lock file
Generating autoload files
Wie Sie der Ausgabe entnehmen können, hat Composer automatisch entschieden, welche Version des Pakets verwendet werden soll. Wenn Sie das Verzeichnis Ihres Projekts jetzt überprüfen, enthält es zwei neue Dateien: "+ composer.json" und "+ composer.lock" sowie ein "+ vendor / +" -Verzeichnis:
ls -l
Outputtotal 12
-rw-r--r-- 1 sammy sammy 59 Feb 1 13:43 composer.json
-rw-r--r-- 1 sammy sammy 2896 Feb 1 13:43 composer.lock
drwxr-xr-x 4 sammy sammy 4096 Feb 1 13:43 vendor
In der Datei + composer.lock +
werden Informationen darüber gespeichert, welche Versionen der einzelnen Pakete installiert sind. Stellen Sie sicher, dass dieselben Versionen verwendet werden, wenn jemand anderes Ihr Projekt klont und dessen Abhängigkeiten installiert. Im Verzeichnis + vendor / +
befinden sich die Projektabhängigkeiten. Der Ordner "+ vendor / " sollte nicht in die Versionskontrolle übernommen werden. Sie müssen nur die Dateien ` composer.json ` und ` composer.lock +` einfügen.
Möglicherweise stellen Sie fest, dass die Datei + composer.lock +
spezifische Informationen über die Version der PHP-Bibliotheken enthält, von denen unser Projekt abhängt. Composer verwendet eine spezielle Syntax, um Bibliotheken auf bestimmte Versionen zu beschränken. Mal sehen, wie das funktioniert.
Grundlegendes zu Versionsbeschränkungen
Wenn Sie den Inhalt Ihrer "+ composer.json" -Datei überprüfen, sehen Sie etwa Folgendes:
cat composer.json
Ausgabe
{
"require": {
"cocur/slugify": "^2.3"
}
}
Vor der Versionsnummer steht ein Caret + ^ +
. Composer unterstützt verschiedene Einschränkungen und Formate für die Definition der erforderlichen Paketversion, um Flexibilität zu bieten und gleichzeitig Ihr Projekt stabil zu halten. Der von der automatisch generierten Datei + composer.json +
verwendete Caret-Operator ist der empfohlene Operator für maximale Interoperabilität nach semantischer Versionierung. In diesem Fall wird "* 1.3 " als minimale kompatible Version definiert und es können Aktualisierungen auf alle zukünftigen Versionen unter " 2.0 *" vorgenommen werden. Weitere Informationen zum Versionsprinzip finden Sie unter Composer-Versionsdokumentation.
Bisher haben wir gesehen, wie wir die PHP-Bibliotheken, die unser Projekt mit Composer benötigt, mithilfe der Datei "+ composer.json " hinzufügen und einschränken können. Der nächste Schritt besteht darin, diese Bibliotheken tatsächlich in unserer Anwendung zu verwenden. Zu diesem Zweck stellt Composer die Datei " autoload.php" zur Verfügung, die das Laden externer Bibliotheken erleichtert.
Schritt 4 - Einschließen des Autoload-Skripts
Composer bietet ein Autoload-Skript, das Sie in Ihr Projekt aufnehmen können, um das Autoloading kostenlos zu erhalten. Dies erleichtert die Arbeit mit Abhängigkeiten und das Definieren eigener Namespaces erheblich. Das Einzige, was Sie tun müssen, ist, die Datei + vendor / autoload.php
in Ihre PHP-Skripte aufzunehmen, bevor Sie eine Klasseninstanziierung durchführen.
Kehren wir zur Beispielanwendung "+ slugify " zurück. Erstellen Sie mit " nano " oder Ihrem bevorzugten Texteditor ein " test.php " -Skript, in dem wir die Bibliothek " cocur / slugify +" verwenden.
nano test.php
test.php
<?php
require __DIR__ . '/vendor/autoload.php';
use Cocur\Slugify\Slugify;
$slugify = new Slugify();
echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
Sie können das Skript in der Befehlszeile ausführen mit:
php test.php
Dies sollte die Ausgabe erzeugen:
Outputhello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it
Sie haben Composer vollständig eingerichtet. Lesen Sie jedoch weiter, um zu erfahren, wie Sie die Installation warten.
Schritt 5 - Aktualisieren von Composer- und Projektabhängigkeiten (optional)
Um Composer selbst zu aktualisieren, können Sie den eingebauten Befehl + self-update +
verwenden. Da Composer global installiert ist, müssen Sie den Befehl mit Root-Rechten ausführen.
sudo -H composer self-update
Sie können eine oder mehrere bestimmte Bibliotheken aktualisieren, indem Sie sie mit + composer update
spezifisch auflisten.
composer update /
Wenn Sie alle Ihre Projektabhängigkeiten aktualisieren möchten, führen Sie den Befehl + update
aus.
composer update
Dadurch wird nach neueren Versionen der Bibliotheken gesucht, die Sie in Ihrem Projekt benötigen. Wenn eine neuere Version gefunden wird und diese mit der in der Datei "+ composer.json " definierten Versionsbeschränkung kompatibel ist, wird die zuvor installierte Version ersetzt. Die Datei ` composer.lock +` wird aktualisiert, um diese Änderungen widerzuspiegeln.
Fazit
Composer ist ein mächtiges Werkzeug, das jeder PHP-Entwickler in seinem Dienstprogramm haben sollte. Es bietet nicht nur eine einfache und zuverlässige Möglichkeit zum Verwalten von Projektabhängigkeiten, sondern setzt auch einen neuen De-facto-Standard für das Teilen und Erkennen von PHP-Paketen, die von der Community erstellt wurden.
In diesem Tutorial haben wir kurz die Grundlagen von Composer beschrieben: wie man es installiert, wie man ein Projekt erstellt und Pakete dafür findet und wie man es wartet. Weitere Informationen finden Sie in der official Composer-Dokumentation.