PHP Projekte mit Composer initialisieren

17. Mai 2016 von Dirk Helbert
PHP Composer

Was ist Composer?

Composer ist ein Manager für Abhängigkeiten. Übersetzt aus dem Englischen wo es Dependency Manager heisst.

Doch was heisst das genau?

Angenommen ich starte ein neues Projekt. From Scratch sozusagen. Das neue Projekt heisst „LogMe“ und nimmt per HTTP GET Informationen entgegen. Diese sollen dann geloggt werden.

Jetzt könnte ich den Logger selbst schreiben oder mir im Internet irgendwo eine Library runterladen und diese dann irgendwie einbinden. Das Problem bei der Vorgehensweise ist, dass die eine Library so eingebunden werden muss und eine andere dann wieder anders.

Mit diesem Problem räumt Composer endgültig auf.

Ich kann über Composer Abhängigkeiten runterladen und diese dann per Autoload einbinden. Das schöne daran ist, dass die Composer Konfigurationsdatei composer.json später auch für andere Zwecke verwendet werden kann. Schließlich benötigt man Logging Funktionen auch in anderen Anwendungen.

Doch am besten kann ich das mit einer Beispiel Anwendung zeigen.

Beispiel Anwendung mit Composer Einsatz

Die Beispiel Anwendung „LogMe“ kann nicht viel. Sie nimmt Anfragen per HTTP GET entgegen und loggt diese dann. Ich brauche also etwas das die Anfragen entgegen nimmt und etwas das dann das Logging übernimmt.

Als erstes schaue ich auf Packagist welche Bibliotheken ich für „LogMe“ benutzen möchte.

Für die Rest Anfragen habe ich Respect/Rest herausgesucht. Für das Logging habe ich mich für Monolog entschieden.

Nachdem jetzt die Abhängigkeiten klar sind, erstelle ich das Projektverzeichnis:

Und installiere die Abhängigkeiten:

Bei der Installation gibt es einige Ausgaben. Ich bekomme vom Composer noch ein paar Hinweise zu Monolog und welche zusätzlichen Abhängigkeiten interessant sein könnten. Diese sind aber nicht notwendig.

Nach der Installation sind im Projektverzeichnis zwei neue Dateien und ein Verzeichnis.

Die composer.lock Datei ist sehr wichtig und sollte bei Bedarf auch in die Versionskontrolle wie Git. Hier stehen zum Beispiel Informationen zur aktuellen Version der einzelnen Abhängigkeiten. Fehlt diese composer.lock Datei, wird unter Umständen beim composer install die falsche Version herangezogen. Weitere Informationen zu dieser Datei gibt es hier.

Die composer.json enthält alle Anweisungen, die ich mit den zwei Befehlen hinzugefügt habe.

Ich hätte auch erst die composer.json erstellen können und dann mit composer install alles installieren können.

Im vendor Verzeichnis finde ich jetzt einige Unterordner. psr ist ein Abhängigkeit von monolog und wurde daher gleich selbstständig installiert.

Nachdem die Abhängigkeiten jetzt klar sind, erstelle ich die index.php.

Zur Entwicklung benutze ich sowohl PHPStorm, als auch Atom. Atom ist ein kostenloser Editor speziell für Webanwendungen. PHPStorm ist auf die Entwicklung von PHP abgestimmt.

Du kannst natürlich auch jeden anderen Editor benutzen.

Ich öffne also die index.php in Atom:

Zuerst erstelle ich hier eine Instanz des Respect Rest Routers mit:

Auf der Konsole im Projektverzeichnis starte ich den in PHP eingebauten Webserver. Für unsere Zwecke reicht das jetzt vollkommen und wir brauchen keinen Apache / Nginx für diese kleine Übung.

Den Built-In Webserver von PHP starte ich mit:

Erscheint eine Fehlermeldung, dann könnte der Port 8000 belegt sein. Versuche dann einfach 8001 oder höher.

Im Browser rufe ich jetzt die Seite mit http://localhost:8000 auf:

Oha. Welch eine Ernüchterung. Doch wo liegt hier der Fehler?

Ich muss noch den Composer Autoload integrieren.

Wenn ich jetzt wieder http://localhost:8000 aufrufe erscheint keine Fehlermeldung mehr. Zeit also den Rest des Routings zu implementieren.

Wenn ich jetzt http://localhost:8000/log/istdochegal aufrufe, wird dieser Text im Browser angezeigt. Perfekt!

Der erste Teil meiner Beispiel Anwendung funktioniert. Die Anwendung nimmt einen Aufruf entgegen und „loggt“ jetzt.

Also bringe ich jetzt noch Monolog ins Spiel:

Die Ausgabe im application.log sieht folgendermaßen aus:

Das war es auch schon mit meiner kleinen Beispiel Anwendung.

Vorteile von Composer

  • Paketmanager
  • Bibliotheken einfach ins Projekt integrieren
  • Abhängigkeiten automatisch auflösen
  • Einfache Weitergabe von Projekten

Fazit zu Composer

Innerhalb von wenigen Minuten habe ich einen kleinen Prototypen entwickelt. Geholfen haben mir dabei zwei Abhängigkeiten oder Bibliotheken, die ich ganz einfach mit Composer zu meinem Projekt hinzugefügt habe. Über den Composer Autoloader habe ich diese Abhängigkeiten dann eingebunden.

Wenn du dir mal anschauen willst wie ein Projekt mit Composer und Laravel entsteht, dann empfehle ich dir das Laravel Anfänger Tutorial für den einfachen Einstieg.

4 Kommentare zu “PHP Projekte mit Composer initialisieren”

  • Pingback: Laravel Anfänger Tutorial für den einfachen Einstieg

  • Hi Dirk,
    macht Spaß Deine Beispiele durch zu arbeiten 😉
    Atom wird nun den altgedienten Bluefish ablösen. Der war mir jahrelang treu….
    So langsam kann ich mich für Larval begeisten. Hab es vor drei Jahren schon einmal erfolglos versucht….
    Schöne Feiertage,
    ToM

    1. Hi ToM,

      freut mich wirklich.

      Laravel ist wirklich genial. Demnächst werde ich hier noch WordPress gegen etwas eigenes ablösen. Mir gehen die Spam Kommentare total auf den Sack. Selbst mit AntispamBee für WordPress gibt es mittlerweile Spam Kommentare ohne Ende. Ich bin ständig damit beschäftigt Kommentare zu löschen. Mit einer eigenen Lösung wird es dann besser und ich habe auch mehr Zeit für die wichtigen Dinge.

      Viele Grüße
      Dirk

Schreibe einen Kommentar

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