Mit Composer die Übersicht behalten – Teil 1
Max Gfeller
Kategorie:in
Entwicklung & Performance
Veröffentlicht am 18. Sept. 2013
Aktualisiert am 10. Sept. 2024
Viele PHP-Projekte ab einer gewissen Grösse erreichen früher oder später einen Punkt, ab dem es schwierig ist die Übersicht zu behalten. Eine Schwierigkeit dabei ist, die ganzen Abhängigkeiten von Klassen, Frameworks und Paketen im Programmiercode zu überblicken und in getesteten Versionen zu halten.
An diesem Punkt kommt nun Composer ins Spiel. Mit Hilfe von Composer können Sie die Abhängigkeiten Ihres Codes zu anderen Paketen (zum Beispiel Symfony) definieren. So kann unter anderem sichergestellt werden, dass Ihr Projekt, das auf einer spezifischen Version von Symfony läuft, auch mit der korrekten Symfony-Version ausgeliefert wird.
Composer ist sehr weit verbreitet und kommt zum Beispiel bei Symfony 2 Framework zum Einsatz, welches komplett per Composer installiert werden und darüber alle Abhängigkeiten selbstständig auflösen kann.
Ein wenig Geschichte
Composer wurde von Jordi Boggiano und Nils Adermann ins Leben gerufen. Mittlerweile beteiligen sich jedoch schon rund 240 Leute an der Entwicklung des Projektes auf Github.
Composer wurde unter anderem von npm, dem Package Manager für node.js inspiriert. Dieser zählt mittlerweile über 40’000 Pakete und hat ein grossartiges Ökosystem für node.js geschaffen.
Verwendung
Die Verwaltung von Abhängigkeiten unter PHP ist ja prinzipiell nichts neues. Dies lässt sich zum Beispiel auch via PEAR lösen. Es gibt allerdings einige grosse Unterschiede, was Composer anders macht:
- Mit Composer werden Abhängikeiten für ein einzelnes Projekt verwaltet und in einem
vendor
-Ordner im Projektverzeichnis abgelegt. Mit PEAR werden die Abhängigkeiten systemweit installiert. - Jedes Comoposer Package beinhaltet eine
composer.json
Datei, welche das Paket und alle Abhängigkeiten davon beschreibt. Es ist kein Problem ein Paket in einer anderen Version zu verwenden als das ein schon verwendetes Paket tut. - Es ist möglich PEAR-Pakete mit Composer zu installieren.
- Es gibt eine
composer.lock
Datei, welche die installierten Pakete mit der genauen Version beinhaltet. So kann auf einem anderen Computer nur nochcomposer install
ausgeführt werden, um die gleichen Pakete in der genau gleichen Version zu installieren. - Für Entwickler ist es um einiges einfacher, eigene Pakete anzubieten: Dafür muss nur das öffentlich erreichbare Git-Repository (z.B. auf GitHub, BitBucket o.ä.) auf packagist.org registriert werden.
Wie Composer bei cyon eingesetzt wird
Auch wir nutzen intern Composer für die Verwaltung der Abhängigkeiten im Code des my.cyon und unseres internen Kundenverwaltungssystems froox. Konkret haben wir alle kleineren Komponenten, welche an verschiedenen Stellen eingesetzt werden können, in einem eigenen Repository. Diese Komponenten können dann über composer und unseren internen Satis (mehr zu Satis im Teil 2) verwendet werden. Dies macht es für uns sehr einfach, Komponenten sowohl im my.cyon als auch in froox zu verwenden.
Composer auf einem cyon-Webhosting
Falls Sie für Ihre Webapplikation ebenfalls Composer einsetzen möchten, so können Sie dies ohne Probleme tun. Wie so oft, gibt es dafür mehrere Möglichkeiten:
- Setzen Sie das Composer-Setup lokal auf Ihrem Computer auf und laden Sie die Seite im Anschluss per SFTP oder FTPS hoch.
- Mit allen unseren Webhosting-Paketen haben Sie auch via SSH Zugriff auf den Server und können Composer direkt über eine Terminal-Applikation über SSH-Befehle steuern.
Details zu beiden Methoden erfahren Sie im zweiten Teil dieses Blogposts. Und der wird nicht lange auf sich warten lassen.
Zudem stellen wir Ihnen dann noch das Appstore-Pendant “Packagist” und Satis vor. Ein konkretes Beispiel packen wir auch dazu, damit Sie mit dem (neuen) Wissen gleich ein kleines Projekt umsetzen können.
Haben Sie schon Erfahrungen mit PHP-Frameworks und Systemen, welche Ihnen die Verwaltung von komplexem Code vereinfachen? Wir freuen uns über Kommentare und Anregungen.
Hab schon 2 Applikationen mit Symfony2 realisiert und mit composer erfolgreich auf meinem Triple Webhosting installiert.
Nach kleinen Anpassungen in der php.ini hat alles toll funktioniert, und tut es immernoch!