Select Page

Abhängigkeiten Komponieren in PHP

by | Dec 28, 2012 | Development

logo composer transparentProblem?

Wie verwendet man eigentlich Fremd-Bibliotheken im eigenen PHP Projekt? Um Probleme zu vermeiden liefert man diese lieber selbst und stellt sie in seiner Verzeichnisstruktur zu Verfügung. Verbunden mit einigen Nachteilen: Das Projekt wird größer (z.B. durch den Einbau von riesigen Bibliotheken wie ORMs) und das Gerangel verschiedener Autoloader wird unperformant und unübersichtlich. Letzten Endes ist die Bibliothek grundsätzlich veraltet und als Author ist man selbst für Updates verantwortlich. Als Alternative hat man hier noch PEAR. Damit stößt man bei Produktivsystem schnell an seine Grenzen: Include Pfade, Dev und Beta Channels verhindern flüssiges Arbeiten und man hat schnell eine kaputte Umgebung die nicht mehr so arbeitet wie man eigentlich wollte.

Ich bin neulich über den Composer gestolpert und hab ihn prompt lieb gewonnen. Projekt-Lokale Installation, einfach Konfiguration und nicht zuletzt eine gute Webseite machen den Einstieg leicht. Am besten ich zeige was ich meine

Konfiguration

Im Projekt selbst wird eine composer.json angelegt:

{
  "require": {
    "twig/twig": "1.11.*",
    "pimple/pimple": "1.0.*"
  }
}

Hier wird kurz beschrieben was man für sein Projekt benötigt. Die Konfiguration bietet natürlich noch einiges mehr. Grundsätzlich reicht das Snippet von oben aber aus.

Installation Composer

$ curl -s https://getcomposer.org/installer | php
#!/usr/bin/env php
All settings correct for using Composer
Downloading...
Composer successfully installed to: /data/tmp/test-projekt/composer.phar
Use it: php composer.phar

That’s it. Falls etwas fehlt, wird man freundlich darauf hingewiesen und man kann die Änderungen nachreichen.

Auflösen der Abhängigkeiten

$ php composer.phar install
Loading composer repositories with package information
Installing dependencies
  - Installing twig/twig (v1.11.1)
    Loading from cache
  - Installing pimple/pimple (v1.0.1)
    Loading from cache
Writing lock file
Generating autoload files

Auch das ging schon fast zu schnell. Wir sind fertig.

Einbinden in den eigenen Code

Der Composer legt im Projekt ein Verzeichnis “vendor” mit einem eigenen Autoloader an. Der muss nur noch inkludiert werden:

<?php
require 'vendor/autoload.php';
// OWN PROJECT

Der Autoloader des Composers kann auch gleich für das eigenen Projekt genutzt werden und beherrscht alle Vorgaben aus dem PSR-0 Standard. Die JSON Datei erhält hierfür eine weitere Konfiguration:

{
    "autoload": {
        "psr-0": {
            "NETWAYS": "lib/",
            "OTHER_NAMESPACE": "lib/",
        }
    }
}

Fazit

Schnell, einfach und leicht. Diese Devise wird vom Composer aufgegriffen und konsequent umgesetzt. Einziges Manko: Man braucht mindestens PHP 5.3.2. Das sollte allerdings schon bis in die letzten staubigen Ecken vorgedrungen sein. Weitere Informationen finden man auf der Webseite oder im Paketverzeichnis.

Ein guter Vorsatz für das bevorstehende neue Jahr – Ich wünsche einen guten Rutsch!

Marius Hein
Marius Hein
Head of IT Service Management

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert und viele Jahre in der Softwareentwicklung gearbeitet. Mittlerweile ist er Herr über die interne IT und als Leiter von ITSM zuständig für die technische Schnittmenge der Abteilungen der NETWAYS Gruppe. Wenn er nicht gerade IPv6 IPSec Tunnel bohrt, sitzt er daheim am Schlagzeug und treibt seine Nachbarn in den Wahnsinn.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic Development

Mein PHP-Trainingsprojekt

PHP Schulung Vor kurzem haben wir begonnen, eine neue Programmiersprache zu lernen – PHP. In der ersten Woche haben wir mit den Grundlagen wie Variablen, Arrays, Schleifen begonnen und uns schrittweise zu komplizierterer Syntax wie Funktionen, Objekten und Klassen...

check_prometheus ist jetzt öffentlich verfügbar!

Monitoring ist komplex, das wissen wir hier bei NETWAYS leider zu gut. Deswegen laufen in der Infrastruktur auch mal gerne mehrere Tools für die Überwachung. Zwei gern gesehene Kandidaten sind dabei Icinga und Prometheus. Icinga und Prometheus erfüllen...