Hallo zusammen! Heute erkläre ich euch, wie man den bekannten PHP Paket Manager „Composer“ unter Windows verwendet und was das nützliche Tool für einen unglaublichen Mehrwert mitbringt.

Den Paket Manager Composer unter Windows zu installieren ist ganz schnell gemacht, denn es gibt bereits seit einiger Zeit einen sehr komfortablen Windows Installer – dieser wird die aktuellste Version installieren und gleichzeitig die PATH Umgebungsvariable ergänzen. Dadurch könnt ihr Composer problemlos über die Konsole (cmd.exe) aufrufen und benutzen.

Composer unter Windows

Was mache ich mit dem Composer unter Windows?

Nun, ehrlich gesagt macht man unter Windows das gleiche mit Composer wie unter Linux und Mac 😉 Ich arbeite zum Beispiel schon immer mit Windows – sowohl Privat als auch im Büro.

Composer wird grundsätzlich als „Paketmanager“ (oder auch „Abhängigkeitsmanager“) für PHP Projekte verwendet. Stellt euch folgende Situation vor (frei Übersetzt aus der Composer Doku):
a) Ihr habt ein Projekt das auf einige Bibliotheken aufbaut.
b) Einige dieser Bibliotheken bauen auf andere Bibliotheken auf (und so weiter).

Composer erlaubt euch:
c) Eure benötigten Bibliotheken inklusive Version zu definieren.
d) Sämtliche Abhängigkeiten in korrekter Version herauszufinden und herunterzuladen.

Composer übernimmt außerdem noch das Autoloading für die heruntergeladenen Bibliotheken und kann optional sogar euren Code mit einem (PSR-4, PSR-0, classmap oder files) Autoloader versorgen 🙂

Wie binde ich Bibliotheken ein?

Sobald Composer installiert ist braucht ihr nur noch eine sogenannte composer.json Datei, die idealerweise im Hauptverzeichnis eures Projekts liegt. Der Inhalt dieser Datei sieht dann in etwa so aus:

{
  "require": {
    "monolog/monolog": "1.0.*"
  }
}

Navigiert nun über die Konsole (cmd.exe) in diesen Ordner und gebt folgendes ein:

composer install

Nun wird Composer die gewünschte Bibliothek in ein neues vendor herunterladen und auf weitere Abhängigkeiten prüfen. Die Dateistruktur sollte nun in etwa so aussehen:

Mein Projekt
|-- vendor
|   |-- composer
|   |-- monolog
|   |   |-- monolog
|   |       |-- [...]
|   |-- autoload.php
|-- package.json
|-- package.lock
|-- index.php
|-- [...]

Alternativ zum manuellen erstellen der package.json Datei könnt ihr auch folgenden Befehl in die Konsole eintippen:

composer require monolog/monolog 1.0.*

Natürlich könnt ihr peu à peu weitere Bibliotheken einbinden und updaten lassen. Um die definierten Bibliotheken, unter Berücksichtigung der eingestellten Bedingungen für Versionen, auf den neusten Stand zu bringen verwendet ihr einfach nur:

composer update

Ich möchte kurz erläutern was die einzelnen Definitionen bedeuten – für weitere Informationen (und davon gibt es massenhaft) schaut bitte in die offizielle Dokumentation:

  • require – Alles Einträge unterhalb von „require“ sind Pakete, die in euer Projekt eingebunden werden.
  • monolog/monolog – gibt die zu ladende Bibliothek an. In diesem Fall Monolog. Die Syntax lautet <vendor name>/<projekt name> (Siehe packagist.org). Der „Vendor Name“ ist dabei nicht unbedingt der Name des Autors sondern ist ähnlich zu verstehen wie ein Namespace.
  • 1.0.* – Bezieht sich auf die Version. In diesem Fall würde immer die neuste Minor Version genommen werden (1.0.0, 1.0.1, 1.0.2, …). Es gibt viele Möglichkeiten die Version einzuschränken, wie z.B. >=1.0, >=1.0 <1.1 oder auch ^1.2. Lest euch hierzu am besten die Dokumentation durch.

Wo finde ich die verfügbaren Pakete

Den Composer unter Windows zu nutzen ist eine Sache - die richtigen Pakete für eure Bedürfnisse zu finden eine andere. Unter packagist.org werdet ihr alle verfügbaren Pakete inklusive Abhängigkeiten, Autoren, Versionen usw. finden.
Die Seite verfügt über eine Suche und Sortier-Funktionen: Ihr könnt euch das Suchergebnis nach "Beliebtheit" oder "Downloads" sortieren lassen.

Die geladenen Bibliotheken im Code verwenden

Kommen wir zum wirklich interessanten Teil: Die Bibliotheken im Code verwenden. In unserer index.php (siehe Verzeichnisstruktur oben) müssen wir dazu nur eine einzige Zeile schreiben:

<?php
include __DIR__ . '/vendor/autoload.php';

// Your code...

Einfacher kann man es eigentlich nicht haben 😉 Sobald der Autoloader eingebunden wurde können alle verfügbaren Klassen verwendet werden!

Composer und euer Repository (Versionierung)

Wenn ihr in eurem Projekt mit Versionierungssoftware wie zum Beispiel SVN oder GIT arbeitet werdet ihr euch vielleicht schon die Frage gestellt haben: Gehört das vendor Verzeichnis und dessen Inhalt versioniert? Für gewöhnlich tut man das nicht, alleine schon um sein Repository "sauber" zu halten... Es sollte stattdessen lieber die composer.json und composer.lock versioniert werden, diese reichen völlig aus um den Inhalt des vendor Verzeichnisses mit Hilfe des composer install (oder auch composer update) Befehls wiederherzustellen.

Letztendlich spricht jedoch nichts wirklich dagegen, den kompletten vendor Ordner zu versionieren.

Was kann Composer noch?

Um es kurz zu fassen: eine ganze Menge. Zwar bleibt das Tool am Ende des Tages "nur" ein Paketmanager, doch der Funktionsumfang ist großartig und sollte kaum Wünsche offen lassen. Ich würde gern ein paar detailliertere Beispiele vorstellen - zum Beispiel wie man den Autoloader für seine eigenen Klassen verwenden kann oder auf selbst definierte Repositories zugreift... Doch das erkläre ich an einem anderen Tag!

Und damit wären wir auch schon am Ende des Eintrags - ich hoffe ich konnte euch etwas interessantes neues zeigen! Bis zum nächsten mal wünsche ich euch eine angenehme Zeit und natürlich Happy Coding!

One comment on “Basics Tutorial: Composer unter Windows (und Linux)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.