
Komponist in PHP
Das Verwalten von Bibliotheken, ihren Abhängigkeiten und Versionen ist ein Problem, dem viele Technologien und Programmiersprachen in ihrer Geschichte begegnet sind. Auch die PHP-Welt hatte in der Vergangenheit Schwierigkeiten bei der Verwaltung und Verteilung von Bibliotheken. Informieren Sie sich jetzt, wie Sie mit der Paketverwaltung in einer PHP-Anwendung mithilfe des Composer-Abhängigkeitsmanagers umgehen können.
Bis PHP über keinen Abhängigkeitsmanager verfügte, mussten Entwickler häufig das „Rad neu erfinden“. Anstatt die vorhandenen Lösungen zu nutzen, entschieden sie sich, einige Funktionalitäten selbst zu implementieren. In anderen Fällen wurde die eingesetzte Software oft nicht aktualisiert (Pakete wurden unsicher) oder das Sammeln aller abhängigen Bibliotheken verursachte einfach viele Schwierigkeiten und dauerte lange.
Nach Jahren der Apathie in diesem Bereich wurde auch für PHP beschlossen, eine Anwendung zu entwickeln, die es ermöglicht, frei zu verwalten – in den Fußstapfen von Lösungen wie bundler für die ruby-Sprache oder npm für node.js und viele andere.
Die Antwort auf diese Probleme war Composer – ein Paketmanager, der in der PHP-Entwicklergemeinschaft gut bekannt ist und den ich in diesem Artikel besonders denen vorstellen möchte, die noch nicht die Gelegenheit hatten, damit zu arbeiten.
Was ist Composer
In den einfachsten Worten ist Composer nichts anderes als eine Anwendung, die über die Befehlszeile gestartet wird (die sogenannte CLI – Command Line Interface) und in PHP geschrieben ist. Sie ist dafür konzipiert, Bibliotheken und Skripte für diese Sprache zu verwalten. Die ersten Arbeiten an ihrer Entwicklung begannen 2011 und nach weniger als einem Jahr wurden sie mit der Veröffentlichung der ersten offiziellen Alpha1-Version (03.2012) abgeschlossen. Die aktuelle stabile Version ist 2.0.7, veröffentlicht im November 2020.
Wann sollte man es verwenden
Unter Berücksichtigung meiner eigenen Erfahrung bei der Arbeit mit Drupal-Entwicklern bei Droptica und PHP-Programmierern, weiß ich, dass es nur einen Fall gibt, in dem es wirklich keinen Sinn macht, Composer zu verwenden – wenn Sie keine einzige Abhängigkeit von einer Bibliothek haben.
Natürlich ist es heutzutage schwer vorstellbar, dass ein Projekt nicht in irgendeiner Weise von den Errungenschaften anderer Programmierer profitieren würde und eine bestimmte Funktionalität von Grund auf neu umgesetzt würde. Aufgrund des Obengenannten und wegen der Benutzerfreundlichkeit und Installation ist Composer in jeder Situation empfehlenswert. Es bietet eine einfache Möglichkeit, Abhängigkeiten für die Bibliothek zu downloaden, zu aktualisieren oder zu beenden, die für Ihr Projekt erforderlich ist.
Wie installiert man es
Die Installation von Composer ist relativ einfach, vorausgesetzt, dass Sie PHP 5.3.2 auf Ihrem System (oder in einem geeigneten Container, wenn Sie z. B. Lösungen wie Docker verwenden) installiert haben. Natürlich variiert der Prozess selbst je nach verwendetem Betriebssystem. Der detaillierte Installationsprozess ist auf der offiziellen Composer-Website zu finden.
Für das Windows-System ist die einfachste Lösung, die Datei Composer-Setup.exe herunterzuladen und auszuführen und dann den gesamten Installationsprozess durchzuführen. Für die Systeme Linux/Unix/macOS erfolgt die Installation schrittweise. Zuerst laden Sie die .phar-Datei (PHP-Archiv) herunter und überprüfen sie:
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;"
Beachten Sie, dass der zu vergleichende Hash mit jeder veröffentlichten Version variiert, daher vergleichen Sie ihn immer mit dem auf der offiziellen Webseite mit Prüfsummen veröffentlichten Wert.
Dann führen Sie die Installation aus, in der Grundversion – lokal
php composer-setup.php
oder zur globalen Nutzung.
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Im letzten Schritt löschen Sie die unnötige Installationsdatei.
php -r "unlink('composer-setup.php');"
Perfekt, jetzt können Sie das volle Potential von Composer in Ihrem System nutzen.
Wie benutzt man es
Composer bietet, wie viele Anwendungen dieser Art, eine Reihe von Funktionalitäten, die es keinen Sinn hätte, in diesem Artikel zu erwähnen (ausführlichere Informationen finden Sie in der offiziellen Dokumentation). Ich möchte jedoch hier einige Befehle vorstellen, die im Alltag eines Entwicklers am nützlichsten sind.
Projektinitialisierung
composer init
Mit diesem Befehl initialisieren Sie ein neues Projekt mit Composer. Nach der Ausführung erstellen Sie die Datei composer.json, in der alle Daten Ihres Projekts gespeichert werden, wie der Projektname, Details über den Autor und – am wichtigsten – alle von ihnen verwendeten Bibliotheken.
Installation eines existierenden Projekts
Wenn Sie bereits ein bestehendes Projekt haben (z. B. ein bestehendes Repository geklont), reicht normalerweise ein Befehl aus, um alle dieselben Pakete zu installieren, die jemand für seine Anwendung veröffentlicht hat (die Liste der installierten Paketversionen wird in der Datei composer.lock gespeichert).
composer install
Hinzufügen, Entfernen und Aktualisieren einer Bibliothek
Das Schema all dieser Befehle bleibt gleich. Grundsätzlich ändert sich nur das Schlüsselwort für eine bestimmte Operation:
- require - zum Hinzufügen,
- remove - zum Entfernen,
- update - zum Aktualisieren eines Pakets.
Um beispielsweise eine neue Bibliothek als Abhängigkeit zu Ihrem Projekt hinzuzufügen (im Hintergrund werden auch die Abhängigkeiten der heruntergeladenen Bibliothek beendet), verwenden Sie einfach den require-Befehl:
composer require /
Ein Beispiel für einen Befehl zur Aktualisierung des Drupal Cores würde folgendermaßen aussehen:
composer update drupal/core
Angenommen, Sie erstellen eine Anwendung zum Generieren von Rechnungen im .pdf-Format, die dann an eine E-Mail-Adresse gesendet werden. Natürlich möchten Sie nicht alles von Grund auf neu schreiben, sondern die benötigten Bibliotheken auf einfache Weise hinzufügen, daher verwenden Sie Composer. Zuerst ergänzen Sie eine PDF-Bibliothek, z.B. dompdf:
composer require dompdf/dompdf
Fertig! Der obige Befehl installiert die neueste Version dieser Bibliothek in Ihrem Projekt, ohne dass zusätzliche Interaktionen Ihrerseits erforderlich sind. Nun ist es an der Zeit, den Versand von E-Mails zu behandeln. Hierfür verwenden Sie ebenfalls eine fertige Lösung – PHPMailer. Nehmen wir an, dass Sie aus irgendeinem Grund schlechte Erfahrungen mit der neuesten Version dieser Bibliothek – 6 – gemacht haben, aber viel mit Version 5 gearbeitet haben. Das stellt mit Composer kein Problem dar – Sie fügen hinzu, was Sie brauchen, und definieren eine bestimmte Hauptversion:
composer require phpmailer/phpmailer:"^5"
Die Syntax von Composer erlaubt verschiedene Bezeichnungen der benötigten Versionen. Diese können auch kleinere Versionen sein – Sie können auf einen bestimmten Branch verweisen, z.B. dev-develop, zum Branch develop in einer bestimmten Bibliothek. Sie können auch eine spezifische Version angeben, z.B. 5.2.28, um genau diese herunterzuladen, z.B. weil sie eine getestete und funktionierende Version ist.
Nach der Ausführung der obigen Befehle wird ein Vendor-Verzeichnis erstellt, das die heruntergeladenen Bibliotheken zusammen mit ihren Abhängigkeiten enthält:
Die composer.json-Datei wird entsprechend aktualisiert und die composer.lock-Datei wird generiert. Die endgültige Struktur im Projektverzeichnis sieht wie folgt aus:
Wie Sie sehen können, können Sie mit einer Reihe von Befehlen im Grunde erfolgreich an jedem Projekt arbeiten – in den meisten Fällen benötigen Sie nichts anderes, und die ganze Magie geschieht im Hintergrund für Sie.
Was Sie bekommen
Composer ist in erster Linie ein umfassendes Tool, das in PHP-Projekten häufig verwendet wird, während es auch in PHP geschrieben ist. Dies ist ein großer Vorteil, denn jeder potenzielle Entwickler, der Ihrem Team beitritt oder mit dem Unternehmen, mit dem Sie zusammenarbeiten möchten, sicherlich schon einmal damit in Berührung gekommen ist und es verwendet hat. Der einfache Installer und die Ausführung grundlegender Befehle ermutigen Sie, es von Anfang an zu verwenden, wenn Sie an einem Projekt arbeiten.
Darüber hinaus ermöglicht die Einfachheit, mit der Sie jede PHP-Bibliothek installieren können, während Sie Einfluss auf ihre Version oder Aktualisierungsoptionen haben, erhebliche Einsparungen bei der Zeit und den verfügbaren Ressourcen der Entwickler. Dank Paketen wie sensiolabs/security-checker können Sie auch eigenständig die verfügbaren Sicherheitsupdates überprüfen und die Sicherheit Ihrer eigenen Anwendung erhöhen. Dies ist typisch für unsere tägliche Arbeit; insbesondere wenn wir beispielsweise eine kontinuierliche Überwachung von Drupal-basierten Websites bereitstellen, ist die Möglichkeit, schnell mit Composer zu aktualisieren, unverzichtbar, und der Prozess selbst ist schnell und effizient.
Zusammenfassung
Als erfahrener Entwickler kann ich mir meine tägliche Arbeit ohne den Einsatz von Composer nicht vorstellen. Tools wie Abhängigkeitsmanager oder Paketmanager sind in vielen Technologien, einschließlich PHP, weit verbreitet. Die Vielzahl von Vorteilen, wie Zeitersparnis, Benutzerfreundlichkeit und einfache Kontrolle über Abhängigkeiten, machen mich in meiner Arbeit effektiver. Wenn Sie sich auch nur auf die Entwicklung Ihres eigenen Anwendungscodes konzentrieren möchten und gleichzeitig – mit den gängigen Standards Schritt halten möchten, dann verwenden Sie einfach Composer. Es ist kinderleicht.