Signatur
Beschreibung
Yaf_Registry implementiert das Registry-Entwurfsmuster innerhalb des Yaf (Yet Another Framework)-PHP-Frameworks. Sie stellt eine statische, globale Ablage bereit, in der beliebige Werte (Objekte, Arrays, skalare Werte) unter einem eindeutigen Schlüssel gespeichert und von jeder Stelle der Anwendung aus abgerufen werden können – ohne globale Variablen oder Dependency Injection nutzen zu müssen.
Typische Anwendungsfälle sind das zentrale Bereitstellen von Konfigurationsobjekten, Datenbankverbindungen oder Service-Instanzen, auf die verschiedene Komponenten der Anwendung gleichzeitig zugreifen müssen. Die Registry-Instanz ist während des gesamten Request-Lebenszyklus verfügbar.
Alle Methoden der Klasse sind statisch, weshalb keine Instanz erzeugt werden muss. Werte werden über Yaf_Registry::set() gespeichert, über Yaf_Registry::get() gelesen, mit Yaf_Registry::has() geprüft und mit Yaf_Registry::del() wieder entfernt.
Die Klasse ist als Singleton konzipiert und kann nicht direkt instanziiert werden. Sie ist ausschließlich über ihre statischen Methoden zu nutzen.
Beispiele
Datenbankverbindung in der Registry speichern und abrufen
<?php
// Bootstrapping: Verbindung zentral ablegen
$pdo = new PDO('mysql:host=localhost;dbname=mydb', 'user', 'pass');
Yaf_Registry::set('db', $pdo);
// In einem Controller oder Model: Verbindung abrufen
$db = Yaf_Registry::get('db');
if ($db instanceof PDO) {
$stmt = $db->query('SELECT 1');
echo 'Verbindung erfolgreich';
}
Existenz prüfen und Eintrag löschen
<?php
// Wert speichern
Yaf_Registry::set('config', ['debug' => true, 'version' => '1.0']);
// Prüfen ob Schlüssel vorhanden
if (Yaf_Registry::has('config')) {
$config = Yaf_Registry::get('config');
echo 'Debug-Modus: ' . ($config['debug'] ? 'aktiv' : 'inaktiv') . PHP_EOL;
}
// Eintrag entfernen
Yaf_Registry::del('config');
// Nach Löschen ist der Schlüssel nicht mehr vorhanden
var_dump(Yaf_Registry::has('config'));
// bool(false)
// Nicht vorhandenen Schlüssel abrufen liefert NULL
var_dump(Yaf_Registry::get('config'));
// Wichtig · Fallstricke
Sicherheitshinweis: Da die Registry global und für alle Komponenten der Anwendung zugänglich ist, sollten keine sensiblen Daten wie Passwörter im Klartext darin abgelegt werden. Zugangsdaten nur in verarbeiteter Form (z. B. bereits geöffnete Verbindung) speichern.
Yaf-Extension erforderlich: Yaf_Registry ist Bestandteil der Yaf-PECL-Extension und steht nur zur Verfügung, wenn diese installiert und in der php.ini aktiviert ist (extension=yaf.so).
Kein Ersatz für Dependency Injection: In großen Anwendungen oder bei Test-Driven Development (TDD) ist die Registry ein Anti-Pattern, da sie implizite Abhängigkeiten erzeugt. Für testbaren Code ist Dependency Injection vorzuziehen.