In PHP Projekten wachsen die Abhängigkeiten von externen Bibliotheken schnell an. Wer Pakete manuell herunterlädt und per require einbindet, verliert rasch den Überblick über Versionen und Kompatibilitäten. Composer löst dieses Problem als Dependency Manager für PHP. Er verwaltet alle Abhängigkeiten pro Projekt und stellt einen Autoloading Mechanismus bereit. Dieses Tutorial erklärt die Installation, die wichtigsten Befehle sowie den Aufbau von composer.json und composer.lock.

Zuerst wird geklärt, was Composer überhaupt leistet. Danach folgen die Installation, das Einbinden von Paketen und die Einrichtung des Autoloadings.
Was ist Composer?
Composer ist ein Dependency Manager, der speziell für PHP entwickelt wurde. Im Gegensatz zu systemweiten Paketmanagern arbeitet Composer projektbezogen und installiert alle Pakete in ein lokales vendor/ Verzeichnis. Das zentrale Repository für Composer Pakete ist Packagist.org, wo tausende PHP Bibliotheken verfügbar sind.
flowchart TD
A["composer.json"] --> B["composer install / update"]
B --> C["Packagist.org"]
C --> D["Pakete herunterladen"]
D --> E["vendor/ Verzeichnis"]
E --> F["vendor/autoload.php"]
F --> G["Klassen automatisch laden"]
Das Diagramm zeigt den typischen Ablauf: Die Datei composer.json definiert die gewünschten Pakete, Composer lädt sie von Packagist herunter und legt alles im vendor/ Verzeichnis ab. Der generierte Autoloader macht alle Klassen sofort verfügbar.
Composer installieren
Die Installation erfolgt über ein Installationsskript, das direkt von der offiziellen Webseite bereitgestellt wird.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Nach der Ausführung steht die Datei composer.phar im aktuellen Verzeichnis bereit. Für eine systemweite Nutzung kann sie nach /usr/local/bin/composer verschoben werden.
Das erste Paket einbinden
Mit dem Befehl composer require wird ein Paket zum Projekt hinzugefügt. Composer erstellt dabei automatisch die Datei composer.json, falls sie noch nicht existiert.
composer require monolog/monolog
Nach der Ausführung enthält die composer.json die neue Abhängigkeit.
{
"require": {
"monolog/monolog": "^3.0"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
Das Zeichen ^3.0 bedeutet, dass jede Version ab 3.0 bis unter 4.0 akzeptiert wird. Composer legt zusätzlich eine composer.lock Datei an, die die exakt installierte Version fixiert. Diese Datei sollte immer in die Versionskontrolle eingecheckt werden.
Abhängigkeiten installieren und aktualisieren
Composer unterscheidet klar zwischen install und update. Der Befehl composer install liest die composer.lock und installiert exakt die dort festgehaltenen Versionen.
composer install
Der Befehl composer update prüft, ob neuere Versionen verfügbar sind, die zu den Versionsbeschränkungen in composer.json passen, und schreibt die composer.lock neu.
composer update
Als Faustregel gilt: composer install wird für das Deployment und beim Klonen eines Projekts verwendet, composer update nur bewusst auf dem Entwicklungsrechner.
Autoloading mit Composer
Einer der größten Vorteile von Composer ist der integrierte Autoloading Mechanismus. Er erspart das manuelle Einbinden von Dateien über require oder include. Der PSR 4 Standard bildet dabei Namespaces auf Verzeichnisse ab.
<?php
/* Autoloader einbinden */
require_once __DIR__ . '/vendor/autoload.php';
/* Installiertes Paket nutzen */
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$log = new Logger('app');
$log->pushHandler(
new StreamHandler(__DIR__ . '/app.log', Logger::WARNING)
);
$log->warning('Das ist eine Warnung.');
Die einzige manuell benötigte Zeile ist require_once __DIR__ . '/vendor/autoload.php'. Danach stehen alle installierten Pakete und eigene Klassen automatisch zur Verfügung.
<?php
/* Eigene Klasse unter src/Mail/Mailer.php */
namespace App\Mail;
class Mailer
{
public function send(string $empfaenger, string $betreff): bool
{
/* Logik zum Versenden der E-Mail */
return mail($empfaenger, $betreff, 'Inhalt der Nachricht');
}
}
Diese Klasse ist dank PSR 4 Autoloading unter dem Namespace App\Mail erreichbar. Nach dem Hinzufügen neuer Autoload Regeln muss einmalig composer dump-autoload ausgeführt werden.
Wichtige Composer Befehle im Überblick
Die folgende Übersicht fasst die wichtigsten Befehle zusammen.
<?php
/* Übersicht der wichtigsten Composer Befehle als Array */
$befehle = [
'composer init' => 'Neues Projekt interaktiv anlegen',
'composer require' => 'Paket hinzufügen',
'composer install' => 'Abhängigkeiten aus composer.lock installieren',
'composer update' => 'Pakete aktualisieren und Lock-Datei neu schreiben',
'composer dump-autoload' => 'Autoloader neu generieren',
'composer remove' => 'Paket entfernen',
'composer show' => 'Installierte Pakete anzeigen',
];
foreach ($befehle as $befehl => $beschreibung) {
echo $befehl . ': ' . $beschreibung . PHP_EOL;
}
Composer ist ein unverzichtbares Werkzeug für die professionelle PHP Entwicklung. Er verwaltet Abhängigkeiten zuverlässig, sorgt durch composer.lock für reproduzierbare Builds und stellt mit PSR 4 Autoloading eine saubere Klassenstruktur sicher.