So installieren und verwenden Sie Composer unter Ubuntu 14.04

Einführung

Composer ist ein beliebtes Abhängigkeitsmanagement-Tool für PHP, das hauptsächlich zur Erleichterung der Installation und Aktualisierung von Projektabhängigkeiten erstellt 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 Ubuntu 14.04-Server installieren und starten.

Voraussetzungen

Für dieses Tutorial benötigen Sie:

  • Ein Server mit Ubuntu 14.04

  • Zugriff auf den Server als regulärer Benutzer mitsudo permission

[[Schritt-1 - Installieren der Abhängigkeiten]] == Schritt 1 - Installieren der Abhängigkeiten

Bevor wir Composer herunterladen und installieren, müssen wir sicherstellen, dass auf unserem Server alle Abhängigkeiten installiert sind.

Aktualisieren Sie zuerst den Paketmanager-Cache, indem Sie Folgendes ausführen:

sudo apt-get update

Lassen Sie uns nun die Abhängigkeiten installieren. Wir benötigencurl, um Composer herunterzuladen, undphp5-cli, um es zu installieren und auszuführen. git wird von Composer zum Herunterladen von Projektabhängigkeiten verwendet. Alles kann mit dem folgenden Befehl installiert werden:

sudo apt-get install curl php5-cli git

Sie können jetzt mit dem nächsten Schritt fortfahren.

[[Schritt 2 - Herunterladen und Installieren von Composer]] == Schritt 2 - Herunterladen und Installieren von Composer

Die Installation von Composer ist sehr einfach und kann mit einem einzigen Befehl ausgeführt werden:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Dadurch wird Composer als systemweiter Befehl mit dem Namencomposer unter/usr/local/bin heruntergeladen und installiert. Die Ausgabe sollte folgendermaßen aussehen:

Output#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Führen Sie zum Testen Ihrer Installation Folgendes aus:

composer

Und Sie sollten eine Ausgabe ähnlich der folgenden erhalten:

Output   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.0-dev (9859859f1082d94e546aa75746867df127aa0d9e) 2015-08-17 14:57:00

Usage:
 command [options] [arguments]

Options:
 --help (-h)           Display this help message
 --quiet (-q)          Do not output any message
 --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
 --version (-V)        Display this application version
 --ansi                Force ANSI output
 --no-ansi             Disable ANSI output
 --no-interaction (-n) Do not ask any interactive question
 --profile             Display timing and memory usage information
 --working-dir (-d)    If specified, use the given directory as working directory.

. . .

Dies bedeutet, dass Composer erfolgreich auf Ihrem System installiert wurde.

[.note] #Wenn Sie für jedes Projekt, das Sie auf diesem Server hosten möchten, separate ausführbare Composer-Dateien bevorzugen, können Sie diese einfach lokal und pro Projekt installieren. Diese Methode ist auch nützlich, wenn Ihr Systembenutzer nicht berechtigt ist, Software systemweit zu installieren. In diesem Fall kann die Installation mitcurl -sS https://getcomposer.org/installer | php durchgeführt werden. Dadurch wird einecomposer.phar-Datei in Ihrem aktuellen Verzeichnis generiert, die mitphp composer.phar [command] ausgeführt werden kann.
#

[[Schritt-3 - Generieren der Composer-JSON-Datei]] == Schritt 3 - Generieren der Composer.Json-Datei

Um Composer in Ihrem Projekt verwenden zu können, benötigen Sie einecomposer.json-Datei. Die Dateicomposer.json teilt Composer im Wesentlichen mit, welche Abhängigkeiten für Ihr Projekt heruntergeladen werden müssen und welche Versionen jedes Pakets installiert werden dürfen. Dies ist äußerst 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. Dabei können leicht Syntaxfehler auftreten. Composer generiert die Dateicomposer.jsonautomatisch, wenn Sie Ihrem Projekt mit dem Befehlrequireeine Abhängigkeit hinzufügen. 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

  • Suchen Sie nach einer geeigneten Open Source-Bibliothek fürPackagist.org, das offizielle Repository für Composer

  • Wählen Sie das Paket, von dem Sie abhängen möchten

  • Führen Siecomposer require aus, um die Abhängigkeit in die Dateicomposer.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 eine URL-freundliche Zeichenfolge umzuwandeln - aslug. Dies wird häufig zum Konvertieren von Seitentiteln in URL-Pfade verwendet (wie der letzte Teil der URL für dieses Lernprogramm).

Beginnen wir mit der Erstellung eines Verzeichnisses für unser Projekt. Wir nennen esslugify:

cd ~
mkdir slugify
cd slugify

Auf Packagist nach Paketen suchen

Jetzt ist es an der Zeit,Packagist.org nach einem Paket zu durchsuchen, mit dessen Hilfe wirslugs generieren können. Wenn Sie in Packagist nach dem Begriff "Schnecke" suchen, erhalten Sie ein ähnliches Ergebnis:

Packagist Search: easy-slug/easy-slug

Auf der rechten Seite jedes Pakets werden in der Liste zwei Zahlen angezeigt. Die Zahl oben gibt an, wie oft das Paket installiert wurde, und die Zahl unten gibt an, wie oft ein Paket auf GitHub mit einem Stern versehen wurde. Sie können die Suchergebnisse anhand dieser Zahlen neu anordnen (suchen Sie nach den beiden Symbolen auf der rechten Seite der Suchleiste). Im Allgemeinen sind Pakete mit mehr Installationen und mehr Sternen stabiler, da sie von so vielen Benutzern verwendet werden. Es ist auch wichtig, die Paketbeschreibung auf Relevanz zu prüfen - ist das wirklich das, wonach Sie suchen?

Was wir brauchen, ist ein einfacher String-to-Slug-Konverter. Aus den Suchergebnissen geht hervor, dass das Paketcocur/slugify mit einer angemessenen Anzahl von Installationen und Sternen gut übereinstimmt. (Das Paket befindet sich etwas weiter unten auf der Seite, als der Screenshot zeigt.)

Sie werden feststellen, dass die Pakete auf Packagist den Namenvendorund den Namenpackagehaben. 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 Namespacecocur/slugifyThe namespace is what we need in order to require the package in our project.

Paket anfordern

Nachdem wir genau wissen, welches Paket wir installieren möchten, können wircomposer require ausführen, um es als Abhängigkeit einzuschließen, und auch diecomposer.json-Datei für das Projekt generieren:

composer require cocur/slugify
OutputUsing version ^1.3 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing cocur/slugify (v1.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 jetzt das Verzeichnis Ihres Projekts überprüfen, enthält es zwei neue Dateien:composer.json undcomposer.lock und einvendor Verzeichnis:

ls -l
Outputtotal 12
-rw-rw-r-- 1 sammy sammy   59 Sep  9 16:22 composer.json
-rw-rw-r-- 1 sammy sammy 2835 Sep  9 16:22 composer.lock
drwxrwxr-x 4 sammy sammy 4096 Sep  9 16:22 vendor

In der Dateicomposer.lockwerden Informationen darüber gespeichert, welche Versionen jedes Pakets installiert sind, und es wird sichergestellt, dass dieselben Versionen verwendet werden, wenn jemand anderes Ihr Projekt klont und seine Abhängigkeiten installiert. Im Verzeichnisvendorbefinden sich die Projektabhängigkeiten. Der Ordnervendor solltenot in die Versionskontrolle übernehmen - Sie müssen nur die Dateiencomposer.json undcomposer.lock einschließen.

[.note] #Wenn Sie ein Projekt installieren, das bereits einecomposer.json-Datei enthält, müssen Siecomposer install ausführen, um die Abhängigkeiten des Projekts herunterzuladen.
#

Grundlegendes zu Versionsbeschränkungen

Wenn Sie den Inhalt Ihrercomposer.json-Datei überprüfen, wird Folgendes angezeigt:

cat composer.json

composer.json

{
    "require": {
        "cocur/slugify": "^1.3"
    }
}

Möglicherweise bemerken Sie das Sonderzeichen^ vor der Versionsnummer aufcomposer.json. 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 generiertencomposer.json-Datei verwendete Caret-Operator (^) ist der empfohlene Operator für maximale Interoperabilität nachsemantic versioning. In diesem Fall definiert es1.3 als die minimal kompatible Version und ermöglicht Aktualisierungen auf zukünftige Versionen unter2.0.

Im Allgemeinen müssen Sie keine Versionsbeschränkungen in dercomposer.json-Datei ändern. In einigen Situationen ist es jedoch möglicherweise erforderlich, dass Sie die Einschränkungen manuell bearbeiten. Beispielsweise, wenn eine wichtige neue Version Ihrer erforderlichen Bibliothek veröffentlicht wird und Sie ein Upgrade durchführen möchten oder wenn die zu verwendende Bibliothek nicht der semantischen Versionierung folgt.

Im Folgenden finden Sie einige Beispiele, die Ihnen ein besseres Verständnis der Funktionsweise von Composer-Versionsbeschränkungen vermitteln sollen:

Zwang Bedeutung Beispielversionen erlaubt

^1.0

> = 1,0 <2,0

1.0, 1.2.3, 1.9.9

^ 1.1.0

> = 1.1.0 <2.0

1.1.0, 1.5.6, 1.9.9

~1.0

> = 1,0 <2,0,0

1.0, 1.4.1, 1.9.9

~ 1.0.0

> = 1.0.0 <1.1

1.0.0, 1.0.4, 1.0.9

1.2.1

1.2.1

1.2.1

1.*

> = 1,0 <2,0

1.0.0, 1.4.5, 1.9.9

1.2.*

> = 1,2 <1,3

1.2.0, 1.2.3, 1.2.9

Überprüfen Sie dieofficial documentation, um eine detailliertere Ansicht der Composer-Versionsbeschränkungen zu erhalten.

[[Schritt-4 -—- einschließlich-des-Autoload-Skripts]] == Schritt 4 - Einschließlich des Autoload-Skripts

Composer bietet auch 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, dievendor/autoload.php-Datei in Ihre PHP-Skripte aufzunehmen, bevor eine Klasseninstanziierung durchgeführt wird.

Kehren wir zur Beispielanwendung vonslugifyzurück. Wir erstellen eintest.php-Skript, in dem wir diecocur/slugify-Bibliothek verwenden:

vim test.php

test.php

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 Ausgabehello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it erzeugen.

[[Schritt-5 - Aktualisieren der Projektabhängigkeiten]] == Schritt 5 - Aktualisieren der Projektabhängigkeiten

Wann immer Sie Ihre Projektabhängigkeiten aktualisieren möchten, müssen Sie nur den Befehlupdateausführen:

composer update

Dadurch wird nach neueren Versionen der Bibliotheken gesucht, die Sie in Ihrem Projekt benötigen. Wenn eine neuere Version gefunden wird und mit der in der Dateicomposer.jsondefinierten Versionsbeschränkung kompatibel ist, wird die zuvor installierte Version ersetzt. Die Dateicomposer.lockwird aktualisiert, um diese Änderungen widerzuspiegeln.

Sie können auch eine oder mehrere bestimmte Bibliotheken aktualisieren, indem Sie Folgendes ausführen:

composer update vendor/package vendor2/package2

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.

Dieses Tutorial enthielt die Grundlagen für den Einstieg in Composer unter Ubuntu 14.04.