Signatur
Beschreibung
Yaf_Bootstrap_Abstract ist die abstrakte Basisklasse, von der alle Bootstrap-Klassen im Yaf-Framework (Yet Another Framework) erben müssen. Sie dient als zentraler Einstiegspunkt für Initialisierungslogik, die vor dem eigentlichen Start der Anwendung ausgeführt werden soll – etwa das Laden von Konfigurationen, Registrieren von Plugins, Setzen von Routen oder das Initialisieren von Diensten.
Eine Bootstrap-Klasse wird typischerweise Bootstrap benannt und im Verzeichnis application/Bootstrap.php abgelegt. Alle Methoden, deren Name mit _init beginnt (z. B. _initConfig, _initRouter), werden von Yaf automatisch in der Reihenfolge ihrer Definition aufgerufen, wenn Yaf_Application::bootstrap() ausgeführt wird.
Die Methoden erhalten als Parameter optional ein Yaf_Dispatcher-Objekt, über das z. B. Plugins registriert oder das Dispatch-Verhalten beeinflusst werden kann. Dies ermöglicht eine saubere, modulare Initialisierung ohne Seiteneffekte im eigentlichen Anwendungscode.
Da die Klasse abstrakt ist, kann sie nicht direkt instanziiert werden. Sie gibt lediglich den Rahmen vor; die eigentliche Logik wird vollständig in der konkreten Unterklasse implementiert.
Beispiele
Einfache Bootstrap-Klasse mit Initialisierungsmethoden
<?php
// application/Bootstrap.php
class Bootstrap extends Yaf_Bootstrap_Abstract {
/**
* Konfiguration initialisieren und in der Registry ablegen
*/
public function _initConfig(Yaf_Dispatcher $dispatcher): void {
$config = Yaf_Application::app()->getConfig();
Yaf_Registry::set('config', $config);
}
/**
* Datenbank-Verbindung herstellen
*/
public function _initDatabase(Yaf_Dispatcher $dispatcher): void {
$config = Yaf_Registry::get('config');
// Beispiel: PDO-Verbindung anhand der Konfiguration aufbauen
$dsn = sprintf(
'mysql:host=%s;dbname=%s;charset=utf8',
$config->database->host,
$config->database->name
);
$pdo = new PDO($dsn, $config->database->user, $config->database->pass);
Yaf_Registry::set('db', $pdo);
}
/**
* Plugin registrieren
*/
public function _initPlugin(Yaf_Dispatcher $dispatcher): void {
$dispatcher->registerPlugin(new AuthPlugin());
}
}
// index.php / öffentlicher Einstiegspunkt
$app = new Yaf_Application('/path/to/application.ini');
$app->bootstrap()->run();
Benutzerdefinierte Route in der Bootstrap registrieren
<?php
// application/Bootstrap.php
class Bootstrap extends Yaf_Bootstrap_Abstract {
public function _initRoute(Yaf_Dispatcher $dispatcher): void {
$router = $dispatcher->getRouter();
// Statische Route für API-Endpunkt hinzufügen
$route = new Yaf_Route_Rewrite(
'/api/user/:id',
[
'controller' => 'Api',
'action' => 'user',
]
);
$router->addRoute('apiUser', $route);
}
public function _initView(Yaf_Dispatcher $dispatcher): void {
// Für reine API-Anwendungen automatisches Rendering deaktivieren
$dispatcher->autoRender(false);
}
}
// Wichtig · Fallstricke
Reihenfolge der _init-Methoden: Yaf ruft alle _init*-Methoden in der Reihenfolge auf, in der sie im Quellcode der Klasse definiert sind. Die Reihenfolge ist daher relevant, wenn Methoden voneinander abhängen (z. B. _initConfig muss vor _initDatabase aufgerufen werden).
Namenskonvention: Der Klassenname muss standardmäßig Bootstrap lauten und die Datei unter application/Bootstrap.php (oder dem konfigurierten application.directory) liegen, damit Yaf sie automatisch erkennt.
Keine Rückgabewerte: Die _init-Methoden sollten keine sinnvollen Rückgabewerte liefern; Yaf ignoriert diese. Zustand sollte über Yaf_Registry oder Properties der Bootstrap-Klasse weitergegeben werden.