Signatur
Beschreibung
Yaf_Application ist das zentrale Singleton-Objekt des Yaf-Frameworks (Yet Another Framework). Es liest die Anwendungskonfiguration aus einer INI-Datei oder einem Array, initialisiert alle notwendigen Ressourcen und steuert den Ablauf vom Einlesen der Anfrage bis zur Ausgabe der Antwort.
Die Klasse implementiert das Singleton-Muster: Es kann immer nur eine Instanz existieren. Über die statische Methode Yaf_Application::app() kann von überall im Code auf diese Instanz zugegriffen werden. Das Objekt wird typischerweise in der index.php (dem Front-Controller) erzeugt.
Der typische Anwendungsablauf sieht so aus: Yaf_Application wird instanziiert, optional wird ein Bootstrap ausgeführt (mit bootstrap()), und anschließend wird die Anfrage mit run() abgearbeitet. Das Framework kümmert sich dann automatisch um Routing, Dispatch und Controller-Ausführung.
- Konfiguration: Akzeptiert einen Pfad zu einer INI-Datei oder ein PHP-Array als Konfiguration.
- Bootstrap: Über
bootstrap()können eigene Initialisierungsroutinen (z. B. Plugin-Registrierung) ausgeführt werden. - Umgebung: Unterstützt verschiedene Umgebungen (product, develop etc.) über den zweiten Konstruktor-Parameter.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $config Pflicht | string|array | Pfad zu einer INI-Konfigurationsdatei (String) oder ein assoziatives Array mit Konfigurationswerten. Muss mindestens den Schlüssel application.directory enthalten. |
|
| $environ | string | product | Name der Umgebung, deren Konfigurationsabschnitt aus der INI-Datei gelesen wird. Standardwert ist product. Typische Werte sind develop, test, product. |
Beispiele
Minimale Yaf-Anwendung mit INI-Konfiguration
<?php
// public/index.php
define('APP_PATH', dirname(__DIR__));
// INI-Konfiguration: application/conf/application.ini
// [product]
// application.directory = APP_PATH "/application"
// application.modules = "Index,Admin"
$app = new Yaf_Application(APP_PATH . '/conf/application.ini');
$app->run();
Anwendung mit Array-Konfiguration und Bootstrap
<?php
// public/index.php
define('APP_PATH', dirname(__DIR__));
$config = [
'application' => [
'directory' => APP_PATH . '/application',
'dispatcher' => [
'catchException' => true,
],
'modules' => 'Index,Admin',
],
];
$app = new Yaf_Application($config, 'develop');
// Bootstrap ausführen (ruft alle _init*-Methoden in Bootstrap.php auf)
$app->bootstrap()->run();
// Von einer anderen Stelle in der Anwendung auf die Instanz zugreifen:
$sameApp = Yaf_Application::app();
echo $sameApp->environ(); // develop
Yaf-Anwendung mit Fehlerbehandlung über Exception
<?php
define('APP_PATH', '/var/www/myapp');
try {
$app = new Yaf_Application([
'application' => [
'directory' => APP_PATH . '/application',
],
]);
$app->run();
} catch (Yaf_Exception $e) {
echo 'Yaf-Fehler: ' . $e->getMessage();
} catch (Exception $e) {
echo 'Allgemeiner Fehler: ' . $e->getMessage();
}
// Wichtig · Fallstricke
Singleton-Verhalten: Es kann nur eine Instanz von Yaf_Application pro Prozess existieren. Der Versuch, eine zweite Instanz zu erstellen, löst eine Yaf_Exception aus. Nutze stattdessen Yaf_Application::app() für den Zugriff auf die bestehende Instanz.
Pflichtfelder in der Konfiguration: Die Konfiguration muss zwingend application.directory enthalten (absoluter Pfad zum Anwendungsverzeichnis), sonst wirft Yaf eine Exception beim Instanziieren.
Umgebungsabhängige INI-Sektionen: Bei INI-Dateien entspricht der environ-Parameter dem Sektionsnamen. Abschnitte können mittels Doppelpunkt-Vererbung definiert werden, z. B. [develop : product].
Yaf als PECL-Extension: Yaf_Application ist Teil der Yaf-Erweiterung (pecl install yaf) und steht nur zur Verfügung, wenn diese in der php.ini geladen ist (extension=yaf.so).