So installieren und verwenden Sie Composer unter Ubuntu 18.04

Eine frühere Version dieses Tutorials wurde vonBrennen Bearnes geschrieben.

Einführung

Composer ist ein beliebtesdependency management-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.

In diesem Tutorial werden Sie Composer auf einem Ubuntu 18.04-System installieren und damit beginnen.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie:

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

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

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

sudo apt update

Lassen Sie uns nun die Abhängigkeiten installieren. Wir benötigencurl, um Composer herunterzuladen, undphp-cli, um es zu installieren und auszuführen. Dasphp-mbstring-Paket ist erforderlich, um Funktionen für eine Bibliothek bereitzustellen, die wir verwenden werden. git wird von Composer zum Herunterladen von Projektabhängigkeiten undunzip zum Extrahieren von komprimierten Paketen verwendet. Alles kann mit dem folgenden Befehl installiert werden:

sudo apt install curl php-cli php-mbstring git unzip

Wenn die Voraussetzungen installiert sind, können wir Composer selbst installieren.

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

Composer bietet eininstaller, geschrieben in PHP. Wir werden es herunterladen, überprüfen, ob es nicht beschädigt ist, und es dann zum Installieren von Composer verwenden.

Stellen Sie sicher, dass Sie sich in Ihrem Home-Verzeichnis befinden, und rufen Sie das Installationsprogramm mitcurl ab:

cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php

Stellen Sie als Nächstes sicher, dass das Installationsprogramm mit dem SHA-384-Hash für das neueste Installationsprogramm auf der SeiteComposer Public Keys / Signaturesübereinstimmt. Kopieren Sie den Hash von dieser Seite und speichern Sie ihn als Shell-Variable:

HASH=544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061

Stellen Sie sicher, dass Sie den hervorgehobenen Wert durch den neuesten Hash ersetzen.

Führen Sie nun das folgende PHP-Skript aus, um sicherzustellen, dass das Installationsskript sicher ausgeführt werden kann:

php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Sie sehen die folgende Ausgabe.

Ausgabe

Installer verified

Wenn SieInstaller corrupt sehen, müssen Sie das Installationsskript erneut herunterladen und überprüfen, ob Sie den richtigen Hash verwenden. Führen Sie dann den Befehl aus, um das Installationsprogramm erneut zu überprüfen. Sobald Sie ein überprüftes Installationsprogramm haben, können Sie fortfahren.

Umcomposer global zu installieren, verwenden Sie den folgenden Befehl, mit dem Composer als systemweiter Befehl mit dem Namencomposer unter/usr/local/bin heruntergeladen und installiert wird:

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Sie sehen die folgende Ausgabe:

OutputAll settings correct for using Composer
Downloading...

Composer (version 1.6.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Führen Sie zum Testen Ihrer Installation Folgendes aus:

composer

In dieser Ausgabe werden die Version und die Argumente von Composer angezeigt.

Output   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.6.5 2018-05-04 11:44:59

Usage:
  command [options] [arguments]

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

Hiermit wird überprüft, ob Composer erfolgreich auf Ihrem System installiert wurde und systemweit verfügbar ist.

[.Hinweis]##

Note: Wenn Sie für jedes Projekt, das Sie auf diesem Server hosten, separate ausführbare Composer-Dateien bevorzugen, können Sie diese pro Projekt lokal installieren. Benutzer von NPM sind mit diesem Ansatz vertraut. Diese Methode ist auch nützlich, wenn Ihr Systembenutzer nicht berechtigt ist, Software systemweit zu installieren.

Verwenden Sie dazu den Befehlphp composer-setup.php. Dadurch wird einecomposer.phar-Datei in Ihrem aktuellen Verzeichnis generiert, die mit./composer.phar command.
ausgeführt werden kann

Lassen Sie uns nun Composer zum Verwalten von Abhängigkeiten verwenden.

[[Schritt 3 - Verwenden von Composer-in-einem-PHP-Projekt]] == Schritt 3 - Verwenden von Composer in einem PHP-Projekt

PHP-Projekte sind oft von externen Bibliotheken abhängig, und die Verwaltung dieser Abhängigkeiten und ihrer Versionen kann schwierig sein. Composer behebt dies, indem es Ihre Abhängigkeiten nachverfolgt und anderen die Installation erleichtert.

Um Composer in Ihrem Projekt verwenden zu können, benötigen Sie einecomposer.json-Datei. Die Dateicomposer.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 ä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. Sie können auf die gleiche Weise weitere Abhängigkeiten hinzufügen, ohne diese Datei manuell bearbeiten zu müssen.

Das Installieren eines Pakets mit Composer als Abhängigkeit in einem Projekt umfasst die folgenden Schritte:

  • Identifizieren Sie, welche Art von Bibliothek die Anwendung benötigt.

  • Suchen Sie inPackagist.org, dem offiziellen Paket-Repository für Composer, nach einer geeigneten Open Source-Bibliothek.

  • 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.

Probieren wir es mit einer Demo-Anwendung aus.

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

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 aufGitHub markiert war. 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 überprüfen, um sicherzustellen, dass es das ist, was Sie benötigen.

Wir brauchen einen einfachen String-zu-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.)

Pakete auf Packagist haben den Namenvendorund den Namenpackage. Jedes Paket hat eine eindeutige Kennung (einen Namespace) im gleichen Format, das GitHub für seine Repositorys verwendet, in der Formvendor/package. Die Bibliothek, die wir installieren möchten, verwendet den Namespacecocur/slugif. Sie benötigen den Namespace, um das Paket in Ihrem Projekt zu benötigen.

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

composer require cocur/slugify

Diese Ausgabe wird angezeigt, wenn Composer die Abhängigkeit herunterlädt:

OutputUsing version ^3.1 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 (v3.1): 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 Jul 11 16:40 composer.json
-rw-rw-r-- 1 sammy sammy 2934 Jul 11 16:40 composer.lock
drwxrwxr-x 4 sammy sammy 4096 Jul 11 16:40 vendor

Diecomposer.lock-Datei wird verwendet, um Informationen darüber zu speichern, welche Versionen jedes Pakets installiert sind, und um sicherzustellen, dass dieselben Versionen verwendet werden, wenn jemand anderes Ihr Projekt klont und seine Abhängigkeiten installiert. Im Verzeichnisvendorbefinden sich die Projektabhängigkeiten. Der Ordnervendormuss nicht in die Versionskontrolle übernommen werden. Sie müssen nur die Dateiencomposer.json undcomposer.lockeinschließen.

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

Werfen wir einen kurzen Blick auf die Versionsbeschränkungen. Wenn Sie den Inhalt Ihrercomposer.json-Datei überprüfen, wird Folgendes angezeigt:

cat composer.json
Output{
    "require": {
        "cocur/slugify": "^3.1"
    }
}
sam

Möglicherweise bemerken Sie das Sonderzeichen^ vor der Versionsnummer incomposer.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 es3.1 als die minimal kompatible Version und ermöglicht Aktualisierungen auf zukünftige Versionen unter4.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, z. B. 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

Eine ausführlichere Ansicht der Versionsbeschränkungen von Composer finden Sie unterthe official documentation.

Als Nächstes sehen wir uns an, wie Abhängigkeiten mit Composer automatisch geladen werden.

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

Da PHP selbst Klassen nicht automatisch lädt, stellt Composer ein Autoload-Skript zur Verfügung, das Sie in Ihr Projekt aufnehmen können, um das Autoloading kostenlos zu erhalten. Dies erleichtert die Arbeit mit Ihren Abhängigkeiten erheblich.

Das einzige, was Sie tun müssen, ist, dievendor/autoload.php-Datei in Ihre PHP-Skripte aufzunehmen, bevor Sie eine Klasseninstanziierung durchführen. Diese Datei wird automatisch von Composer generiert, wenn Sie Ihre erste Abhängigkeit hinzufügen.

Probieren Sie es in unserer Anwendung aus. Erstellen Sie die Dateitest.php und öffnen Sie sie in Ihrem Texteditor:

nano test.php

Fügen Sie den folgenden Code hinzu, der die Dateivendor/autoload.phpeinbringt, die Abhängigkeit voncocur/slugifylädt und daraus einen Slug erstellt:

test.php

slugify('Hello World, this is a long sentence and I need to make a slug from it!');

Speichern Sie die Datei und beenden Sie Ihren Editor.

Führen Sie nun das Skript aus:

php test.php

Dies erzeugt die Ausgabehello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it.

Abhängigkeiten müssen aktualisiert werden, wenn neue Versionen herauskommen. Schauen wir uns also an, wie Sie damit umgehen.

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

Wenn Sie Ihre Projektabhängigkeiten auf neuere Versionen aktualisieren möchten, führen Sie den Befehlupdateaus:

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, ersetzt Composer die zuvor installierte Version. Die Dateicomposer.lockwird aktualisiert, um diese Änderungen widerzuspiegeln.

Sie können auch eine oder mehrere bestimmte Bibliotheken aktualisieren, indem Sie sie wie folgt angeben:

composer update vendor/package vendor2/package2

Stellen Sie sicher, dass Sie Ihrecomposer.json- undcomposer.lock-Dateien einchecken, nachdem Sie Ihre Abhängigkeiten aktualisiert haben, damit andere diese neueren Versionen installieren können.

Fazit

Composer ist ein mächtiges Werkzeug, das jeder PHP-Entwickler in seinem Dienstprogramm haben sollte. In diesem Tutorial haben Sie Composer installiert und in einem einfachen Projekt verwendet. Sie wissen jetzt, wie Sie Abhängigkeiten installieren und aktualisieren.

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.

Related