Composeist ein Abhängigkeitsmanager für PHP (ähnlich wie npm für Node.jsor pip für Python).
Composer zieht alle erforderlichen PHP-Pakete ein, von denen Ihr Projekt abhängt, und verwaltet sie für Sie. Es wird in allen modernen PHP-Frameworks und -Plattformen wie Laravel, Symfony, Drupal und Magento verwendet.
Dieser Artikel erklärt, wie man Composer auf Debian 10-Systemen installiert. Wir werden auch behandeln, wie Composer zum Erstellen und Verwalten von PHP-Projekten verwendet wird.
Installieren von Composer unter Debian #
Stellen Sie vor der Installation von Composer sicher, dass Sie alle erforderlichen Pakete auf Ihrem Debian-System installiert haben:
sudo apt update
sudo apt install wget php-cli php-zip unzip
Composer bietet ein in PHP geschriebenes Installationsprogramm, mit dem wir Composer installieren.
Laden Sie den Installer mit wget
herunter :
wget -O composer-setup.php https://getcomposer.org/installer
Der obige Befehl speichert die Datei als composer-setup.php
im aktuellen Arbeitsverzeichnis.
Composer ist eine Einzeldatei-CLI-Anwendung, die entweder global oder als Teil des Projekts installiert werden kann. Die globale Installation erfordert sudo-Berechtigungen.
-
Um Composer global als systemweiten Befehl zu installieren, der allen Benutzern zur Verfügung steht, legen Sie die Datei einfach in einem Verzeichnis ab, das sich im
PATH
des Systems befindet . Der folgende Befehl installiert Composer im Verzeichnis/usr/local/bin
Verzeichnis:sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
All settings correct for using Composer Downloading... Composer (version 1.10.10) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer
Sie können jetzt Composer verwenden, indem Sie
composer
ausführen in Ihrem Terminal. -
Um Composer lokal zu installieren, laden Sie die Datei in Ihr Projektstammverzeichnis herunter:
sudo php composer-setup.php --install-dir=/path/to/project
Dadurch wird eine Datei namens
composer.phar
heruntergeladen . Um Composer zu verwenden, navigieren Sie zum Projektverzeichnis und führen Siephp composer.phar
aus
Wenn eine neue Composer-Version verfügbar ist, können Sie die Installation mit dem folgenden Befehl aktualisieren:
sudo composer self-update
Erste Schritte mit Composer #
Nachdem Sie Composer nun auf Ihrem Debian-System installiert haben, zeigen wir Ihnen, wie Sie ein PHP-Projekt erstellen.
Beginnen Sie mit der Erstellung eines Verzeichnisses, das das Projektstammverzeichnis sein wird, und enthalten Sie composer.json
Datei. Diese Datei beschreibt Ihr PHP-Projekt, einschließlich der PHP-Abhängigkeiten und anderer Metadaten.
Führen Sie die folgenden Befehle aus, um das Projektverzeichnis zu erstellen, und wechseln Sie mit:
mkdir ~/my-first-composer-project
cd ~/my-first-composer-project
Als Nächstes initialisieren wir eine neue composer.json
Datei mit dem composer require <package name>
Befehl und geben Sie das Paket an, das wir herunterladen möchten. In diesem Beispiel erstellen wir eine Beispielanwendung, die die aktuelle Uhrzeit mit einem Paket namens carbon.
Führen Sie den folgenden Befehl aus, um eine neue composer.json
zu initialisieren Datei und installieren Sie das Carbon-Paket:
composer require nesbot/carbon
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 5 installs, 0 updates, 0 removals
- Installing symfony/translation-contracts (v2.1.3): Downloading (100%)
- Installing symfony/polyfill-php80 (v1.18.1): Downloading (100%)
- Installing symfony/polyfill-mbstring (v1.18.1): Downloading (100%)
- Installing symfony/translation (v5.1.3): Downloading (100%)
- Installing nesbot/carbon (2.38.0): Downloading (100%)
symfony/polyfill-mbstring suggests installing ext-mbstring (For best performance)
symfony/translation suggests installing symfony/config
symfony/translation suggests installing symfony/yaml
symfony/translation suggests installing psr/log-implementation (To use logging capability in translator)
Writing lock file
Generating autoload files
5 packages you are using are looking for funding.
Use the `composer fund` command to find out more
Wie in der Ausgabe gezeigt, erstellt Composer die Datei composer.json
Datei und lädt Carbon und alle seine Abhängigkeiten herunter und installiert es.
Wenn Sie das Verzeichnis Ihres Projekts mit ls
auflisten , sehen Sie, dass es zwei Dateien composer.json
enthält und composer.lock
, und ein vendor
Verzeichnis.
ls -l
-rw-r--r-- 1 linuxize users 60 Aug 17 21:02 composer.json
-rw-r--r-- 1 linuxize users 6851 Aug 17 21:02 composer.lock
drwxr-xr-x 5 linuxize users 4096 Aug 17 21:02 vendor
vendor
- das Verzeichnis, in dem die Projektabhängigkeiten gespeichert sind.composer.lock
- eine Datei, die eine Liste aller installierten Pakete enthält, einschließlich der Version der Pakete.composer.json
- eine Datei, die das PHP-Projekt und alle PHP-Abhängigkeiten beschreibt.
Composer bietet Autoload-Funktionen, mit denen Sie PHP-Klassen verwenden können, ohne require
zu müssen oder include
die Dateien.
Erstellen Sie eine Datei namens testing.php
und fügen Sie den folgenden Code ein:
<?php
require __DIR__ . '/vendor/autoload.php';
use Carbon\Carbon;
printf("Now: %s", Carbon::now());
Lassen Sie uns den Code Zeile für Zeile analysieren.
In der ersten Zeile nach dem öffnenden PHP-Tag binden wir die vendor/autoload.php
ein Datei, die von Composer automatisch generiert wurde. Diese Datei lädt automatisch alle erforderlichen Bibliotheken.
Als nächstes aliasieren wir Carbon\Carbon
als Carbon
, und in der letzten Zeile drucken wir die aktuelle Uhrzeit mit dem Carbon now
Methode.
Führen Sie das Skript aus, indem Sie Folgendes eingeben:
php testing.php
Die Ausgabe sollte in etwa so aussehen:
Now: 2020-08-17 21:08:45
Wenn Sie später die Projektpakete aktualisieren müssen, geben Sie Folgendes ein:
composer update
Der obige Befehl sucht nach neueren Versionen der installierten Pakete und ob eine neuere Version gefunden wird und die Versionseinschränkung mit der in composer.json
angegebenen übereinstimmt , Composer aktualisiert das Paket.