Composer ist dazu da, Abhängigkeiten (sogenannte Pakete) in PHP zu installieren. Solch eine Software wird als Paketmanager bezeichnet.
Composer ist eine Paketverwaltung und ein Paketmanger für PHP, um Abhängigkeiten für dein PHP Projekt zu laden. Der Vorteil von Composer ist, dass du diese Abhängigkeiten automatisch Updaten kannst und nicht diese Dateien mit deinem PHP Code ausliefern musst, da diese auf dem verwendeten System neu heruntergeladen werden mit dem entsprechenden Befehl.
Composer ist mit einem Autoloader ausgestattet, der alle Pakete aus dem vendor
Ordner laden kann. Natürlich kannst du den Autoloader noch um eigene Pakete ergänzen, oder deinen gesamten Code über den Autoloader von Composer laufen lassen.
Über Composer können eigene Pakete verwaltet, neue Pakete heruntergeladen und bestehende können geupdatet werden.
Composer ist seit dem 24. Oktober 2020 in der Version 2.0 verfügbar und wird ab der PHP Version 5.3 unterstützt. Composer 2 hat unter anderem ein deutliches Performance-Update bekommen. In der offiziellen Nachricht zur Veröffentlichung wird von einer Verbesserung von bis zu über 50% gesprochen. Genaue Zahlen werden allerdings nicht genannt, da diese auch stark Projektabhängig ist. Mit der Composer Version 2.2 soll der Support für ältere Version als 7.1.3 definitiv eingestellt werden. Zurzeit ist die Version 2.0.11 aktuell, also etwas Zeit ist definitiv noch hin, bis der Support für PHP 5 eingestellt wird komplett.
Ein Paket ist eine Sammlung von Code, mit dem eine bestimmte Methodik implementiert wird. Zum Beispiel gibt es Pakete, um die Spotify API zu nutzen oder Routing zu realisieren. Etwas ähnlich zu den klassischen PHP Extensions, mit dem Unterschied, dass dieser Code in C geschrieben ist und auf dem System installiert wird, wohingegen diese PHP Pakete in PHP geschrieben sind und direkt pro Projekt eingebunden werden und nicht global für die PHP Version auf dem Betriebssystem installiert werden.
Composer macht immer dann Sinn, wenn du externe Pakete verwenden willst. Zum Beispiel willst du den PHP Mailer verwenden. Natürlich kannst du dir auch das Repository von Github herunterladen und die Dateien auswählen, die du brauchst. Allerdings hast du dann das Problem, dass bei Updates du wieder händisch alles austauschen musst. Bei Composer hast du den Befehl composer update
, um die Pakete direkt updaten zu können.
Ein Vorteil ist ebenfalls, wenn du Composer verwendest, kannst du die nötigen Abhängigkeiten auf deinem Zielsystem neu installieren und musst zum Teil 1000 von Dateien nicht explizit mit übertragen, was bei einige PHP Paketen durchaus vorkommen kann.
Composer zu installieren kann über die Commandline bzw. Terminal erfolgen oder unter Windows auch mit einem .exe-Installer. Um mit der Installation zu starten, solltet ihr prüfen, falls ihr euch nicht sicher seit, ob ihr bereits PHP korrekt installiert habt. Das und die PHP Version könnt ihr abfragen mit php -v
, danach wird euch die Version ausgegeben oder ihr erhaltet folgende Meldung.
Falls der Befehl php nicht vorhanden ist, stimmt etwas mit eurer PHP Installation nicht.
Auf Windows gibt es zwei Varianten der Installation, ich zeige euch hier nur die deutlich einfachere Installation per exe. Dafür ist es ebenfalls wichtig, dass PHP bereits auf eurem Rechner liegt und möglichst auch per php Command erreichbar ist.
Falls es nicht vorhanden ist, solltet ihr noch eine aktuelle PHP Version installieren.
Wenn PHP nun auf eurem System vorhanden ist, könnt ihr mit der composer-setup.exe fortfahren.
Im Installationsprozess selber könnt ihr bereits sehen, ob eine PHP Version erkannt wird oder nicht. Falls es nicht vorhanden ist, könnt ihr einfach den Pfad zu eurem PHP Verzeichnis noch einmal anpassen, oder ihr schaut noch einmal nach wo eure PHP Verzeichnis abgelegt worden ist. Wenn ihr es unter C:/ abgelegt habt, sollte es eigentlich standardmäßig wie auf meinem Windows 10 Computer erkannt werden.
Nach der Installation kannst du mit dem composer diagnose
prüfen, ob die Installation erfolgreich war. Und alles Korrekt konfiguriert ist für dein System.
Es gibt im Paketmanger von einigen Linux System wie Linux Mint eine Version von Composer, die man so installieren kann. Allerdings ist diese Quelle veraltet und verwendet nicht die offizielle phar weshalb eine Installation über diese weg absolut nicht empfohlen wird.
Das empfiehlt unter anderem auch Jordi Boggiano in diesem Github Issue: https://github.com/composer/composer/issues/9419. Er hat insgesamt die meisten Commits bei dem Composer Repository gemacht, er wird es wissen!
Die Installation von Composer 2 sieht zurzeit wie folgt aus. Falls die 2 Zeile euch einen Fehler "Installer corrupt" zurückgibt, ist dieser Code nicht mehr aktuell. Gehe auf die Webseite https://getcomposer.org/download/. Dort findest du die aktuelle Version. Der sha384-Hash wird sich bei jeder neuen Version immer ändern. Dieser wird geprüft, damit die heruntergeladen Datei auch die Originaldatei ist und kein Schade Code oder ähnliches eingefügt wird.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Für eine globale Nutzung von Composer müssen wir es nun noch global verfügbar machen. Das geht über den folgenden Befehl unter Unix Systemen:
mv composer.phar /usr/local/bin/composer
Nun kannst du testen, ob Composer korrekt installiert wurde und alles erfolgreich gesetzt wurde. Dafür kannst du den Befehl composer diagnose
verwenden!
Im Folgenden wirst du diese Ausgabe erhalten. Dort sollte alles Grün/Gelb Leuchten und natürlich nicht Rot.
Auf MacOS kannst du auch einen Paketmanager benutzten. Diesen musst du aber zuerst installieren. Mehr Informationen dazu findest du hier.
Um Composer nun mittels Homebrew installieren zu können, musst du nur folgenden Befehl ausführen:
brew install composer
Mittels des Befehls composer diagnose
kannst du wieder prüfen, ob alles korrekt installiert wurde und läuft.
Mehr Informationen zu Homebrew findest du in dem folgenden Artikel: Paketmanager für MacOS, das ist Homebrew!
Je nach Version 1.X kannst du den folgenden Command nutzen. Dieser bringt dich zur aktuellsten Version von Composer.
composer self-update
Wie ich oben bei dem Abschnitt zum Linux Paketmanager schon geschrieben habe, sollte man diese Variante nicht verwenden. Zum Beispiel war bei mir trotz 1.8er Version der self-update
Befehl nicht vorhanden. Allerdings hab ich ihn auch eben mit 1.7 auf einem anderen System ohne Probleme ausführen können.
In diesem Fall muss du die Version, die du über den Paketmanager installiert hast, erst entfernen und dann eine reguläre Installation durchführen.
Es gibt eine offizielle Seite für Composer Pakete. Das ist Packagist, des Weiteren verwende ich oft auch GitHub zur Suche der großen Parket, die etwas von sich halten. Die schreiben auch dort die entsprechenden Composer Befehle für die Installation hin.
Hier findest du einige interessante Pakete für Composer, die wir dir schon vorgestellt haben auf HelloCoding.de
Name | Beschreibung |
---|---|
PHP Dot Env | Mit PHP Dot Env kannst du eine .env Datei erstellen und entsprechend einlesen. |
Spotify Web API | Um die Spotify Web API anzusteuern, gibt es ein entsprechendes Paket. |
PHP Mailer | Das Standardpaket um E-Mails unter anderem über SMTP zu versenden, ist PHP Mailer. |
Um Pakete bei Composer installieren zu können, benötigst du folgenden Befehl:
composer require <paketname>
Alternativ kannst du eine composer.json erstellen und dann den folgenden Befehl ausführen. Am einfachsten ist es allerdings, das erste Paket über den require Befehl zu erstellen, da Composer dann die composer.json selbst erstellt.
composer install
So kann zum Beispiel eine composer.json mit mehreren Abhängigkeiten aussehen:
{
"require": {
"php-curl-class/php-curl-class": "^8.3",
"bramus/router": "~1.3",
"twig/twig": "^2.0",
"claviska/simpleimage": "^3.3",
"paquettg/php-html-parser": "^1.7",
"katzgrau/klogger": "dev-master",
"nochso/html-compress-twig": "^2.0",
"aptoma/twig-markdown": "^3.0",
"erusev/parsedown": "^1.7",
"chrisjean/php-ico": "^1.0"
}
}
Als Startdatei ist es üblich, eine index.php zu erstellen. Als erste Zeile wird auf den Autoloader von Composer verwiesen.
require __DIR__ . '/vendor/autoload.php';
Nachdem du nun den Autoloader hinzugefügt hast, kannst du auf deine Pakete zugreifen und mit diesen arbeiten.
Danke fürs Lesen des Artikels über die Paketverwaltung mit Composer. Ich hoffe, dieser Artikel hat dir weitergeholfen.
Hinterlasse mir gerne einen Kommentar zum Artikel und wie er dir weitergeholfen hat beziehungsweise, was dir helfen würde das Thema besser zu verstehen. Oder hast du einen Fehler entdeckt, den ich korrigieren sollte? Schreibe mir auch dazu gerne ein Feedback!
Vielen Dank für deinen Kommentar Peter!
Gruß, Felix
Deine Seite ist ein Mekka für jeden Einsteiger in das Universum der Progammierung. Danke für Deine Mühe!
Mögen dir die Götter der Bits und Beytes immer gewogen sein.
Grüße, Peter