Pimple PHP: Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Pimple für PHP: Vollständige Anleitung zum einfachen DI-Container

1. Was ist Pimple und warum wird es benötigt?

Pimple ist ein leichtgewichtiger Dependency Injection Container (DI-Container) für PHP, entwickelt von Fabien Potencier, dem Schöpfer des Symfony Frameworks. Im Gegensatz zu schwerfälligen DI-Containern bietet Pimple eine minimalistische Lösung, die sich ohne großen Aufwand in jedes Projekt integrieren lässt. Die Bibliothek implementiert das Service-Locator-Muster und stellt eine einfache API zur Verwaltung von Objekten und deren Abhängigkeiten bereit.

Die Hauptaufgabe von Pimple ist es, die Verwaltung von Abhängigkeiten in PHP-Anwendungen zu vereinfachen. Anstatt Objekte manuell mit new zu erstellen und sie an Konstruktoren zu übergeben, registrieren Sie Dienste im Container und rufen sie dann über ihren Namen ab. Der Container löst Abhängigkeiten automatisch auf, erstellt Objekte einmalig (Singleton) oder bei jedem Aufruf neu (Factory) und verwaltet deren Lebenszyklus. Dies macht den Code modularer, testbarer und wartbarer.

Pimple eignet sich ideal für kleine und mittlere Projekte, die nicht den vollen Funktionsumfang von Symfony DI oder PHP-DI benötigen. Es verwendet keine Annotationen, erfordert keine komplexe Konfiguration und funktioniert ab PHP 5.3. Die Bibliothek wird aktiv in Silex (Mikro-Framework) und anderen PHP-Projekten eingesetzt, bei denen Einfachheit und Geschwindigkeit im Vordergrund stehen.

2. Installation

Pimple wird über Composer installiert, den Standard-Paketmanager für PHP. Führen Sie im Terminal folgenden Befehl aus:

composer require pimple/pimple

Nach der Installation binden Sie den Composer-Autoloader in Ihre PHP-Datei ein:

require_once __DIR__ . '/vendor/autoload.php';

Falls Sie noch keine composer.json haben, erstellen Sie diese:

{
    "require": {
        "pimple/pimple": "^3.5"
    }
}

3. Schnellstart – Minimales Arbeitsbeispiel

Erstellen Sie eine Datei index.php und fügen Sie folgenden Code hinzu:

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

use Pimple\Container;

// Container erstellen
$container = new Container();

// Einfachen Dienst definieren (Closure)
$container['greeting'] = function ($c) {
    return 'Hallo, Welt!';
};

// Dienst mit Parameter definieren
$container['personal_greeting'] = function ($c) {
    return function ($name) use ($c) {
        return 'Hallo, ' . $name . '!';
    };
};

// Dienste abrufen
echo $container['greeting'] . "\n"; // Hallo, Welt!
echo $container['personal_greeting']('Anna') . "\n"; // Hallo, Anna!

// Objekt-Dienst definieren
class Logger {
    public function log($message) {
        echo "[LOG] $message\n";
    }
}

$container['logger'] = function ($c) {
    return new Logger();
};

$container['logger']->log('Anwendung gestartet');

Führen Sie das Skript aus: php index.php. Sie sehen die Ausgabe von drei Nachrichten. Dieses Beispiel zeigt die grundlegende Registrierung und den Abruf von Diensten aus dem Container.

4. Wichtige Methoden und Klassen

4.1. Pimple\Container::__construct()

Signatur: public function __construct(array $values = [])

Beschreibung: Erstellt eine neue Instanz des Containers. Sie können ein Array mit vordefinierten Werten/Diensten übergeben.

$container = new Container([
    'db.host' => 'localhost',
    'db.name' => 'test'
]);

4.2. offsetSet($id, $value) (magische Methode über [])

Signatur: public function offsetSet($id, $value): void

Empfehlungen