COMPOSER: PHP-ABHÄNGIGKEITSVERWALTUNG ERKLÄRT
Composer revolutionierte PHP durch die effiziente Verwaltung von Abhängigkeiten.
Wichtigste Funktionen von Composer
Composer ebnete den Weg für modulare und paketbasierte PHP-Anwendungsframeworks. Symfony, Laravel, Drupal 8+ und andere moderne Frameworks basieren maßgeblich auf Composer für die Architektur ihres Ökosystems.
Letztendlich professionalisierte Composer die PHP-Entwicklung durch eine verbesserte Abhängigkeitsverwaltung, die Unterstützung semantischer Versionierung und die Förderung einer Kultur wiederverwendbaren, teilbaren Codes durch Packagist.
Composer verwendet eine Variante des SAT-Algorithmus (Boolean Satisfiability Problem), um eine konsistente Menge an zu installierenden Paketversionen zu ermitteln. Dabei werden alle Einschränkungen aus der Datei composer.json sowie transitive Abhängigkeiten berücksichtigt.
Nach der Auflösung speichert Composer die endgültigen Versionen und deren Quellverzeichnisse in der Datei composer.lock. Dies gewährleistet deterministische Installationen in verschiedenen Umgebungen.
3. Installation und automatisches Laden von Vendor-Paketen
Pakete werden von Packagist (oder benutzerdefinierten Repositories) heruntergeladen und im Ordner vendor gespeichert. Composer generiert dynamisch einen effizienten, auf PSR-4 basierenden Autoloader in der Datei vendor/autoload.php, der sofortigen Zugriff auf alle Klassen innerhalb der definierten Namensräume ermöglicht.
4. Aktualisierung der Abhängigkeiten
Durch Ausführen von composer update werden alle Pakete auf die neuesten, durch die Abhängigkeitsbeschränkungen erlaubten Versionen aktualisiert. Dies ändert die Datei composer.lock. Gleichzeitig installiert composer install genau die in composer.lock festgelegten Pakete und gewährleistet so reproduzierbare Builds.
5. Skripte und Hooks
Composer unterstützt Skripte vor und nach der Installation/Aktualisierung. Beispiel für die Ausführung automatisierter Tests nach der Installation:
"scripts": {"post-install-cmd": ["phpunit"]}Skripte können Shell-Befehle, Composer-Plugins oder PHP-Callbacks aufrufen und so die Flexibilität von Build-, Deployment- und Validierungs-Workflows erhöhen.
6. Benutzerdefinierte Repositories und Plugins
Packagist ist zwar das Standard-Repository, es können aber auch private oder unternehmensweite Repositories definiert werden. Composer unterstützt außerdem Plugins, die das Standardverhalten anpassen, neue Befehle hinzufügen oder interne Prozesse erweitern können.
Composer fungiert im Wesentlichen als Vertragspartner zwischen Ihrer Codebasis und den von ihr verwendeten Abhängigkeiten. Dank klarer Grenzen, zuverlässiger Installationen und Unterstützung für Automatisierung hat Composer die PHP-Abhängigkeitsverwaltung disziplinierter gestaltet und ist in modernen PHP-Projekten nach wie vor unverzichtbar.