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
Auch in der Bibliothek
Kryptographie in Kotlin: Verschlüsselung und Hashing mit Beispielen
Geolokalisierung und Karten in Go (Golang): Bibliotheken und Beispiele
ts-sql-query TypeScript: Vollständige Anleitung mit Beispielen
Rust PDF erstellen: Komplette Anleitung mit Beispielen
Arbeiten mit CSV in Go (Golang): Vollständige Anleitung zum Parsen und Schreiben