Signatur
Beschreibung
Yaf_View_Simple ist die Standard-View-Implementierung des Yaf-Frameworks (Yet Another Framework). Sie implementiert das Interface Yaf_View_Interface und bietet eine schlanke, performante Möglichkeit, PHP-Dateien als Templates zu rendern – ohne eigene Template-Sprache, sondern mit nativem PHP.
Die Klasse erlaubt es, Template-Variablen über assign() zu setzen und anschließend über render() oder display() ein Template zu verarbeiten. Da gewöhnliche PHP-Dateien als Templates dienen, entsteht kein Kompilier-Overhead wie bei anderen Template-Engines. Zugewiesene Variablen stehen im Template direkt als lokale Variablen zur Verfügung.
Typischerweise wird Yaf_View_Simple nicht manuell instanziiert, sondern automatisch vom Yaf-Dispatcher bereitgestellt. Dennoch kann sie eigenständig verwendet werden, z. B. in Unit-Tests oder wenn man die View-Engine manuell austauschen möchte.
- render(): Rendert das Template und gibt den resultierenden HTML-String zurück.
- display(): Rendert das Template und gibt den Output direkt aus.
- assign(): Weist eine oder mehrere Variablen dem Template zu.
- setScriptPath() / getScriptPath(): Setzt/liest das Basisverzeichnis für Templates.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $template_dir Pflicht | string | Absoluter Pfad zum Verzeichnis, in dem die Template-Dateien liegen. | |
| $options | array | [] | Optionales assoziatives Array mit Konfigurationsoptionen für die View-Engine. |
Beispiele
Einfaches Template rendern und ausgeben
<?php
// Template-Datei: /var/www/templates/hello.php
// Inhalt: <h1>Hallo, <?= htmlspecialchars($name) ?>!</h1>
$view = new Yaf_View_Simple('/var/www/templates');
$view->assign('name', 'Welt');
// Ausgabe direkt an den Browser senden
$view->display('hello.php');
Template als String rendern und weiterverarbeiten
<?php
// Template-Datei: /var/www/templates/email.php
// Inhalt: Sehr geehrte/r <?= htmlspecialchars($anrede) ?> <?= htmlspecialchars($nachname) ?>,
$view = new Yaf_View_Simple('/var/www/templates');
$view->assign([
'anrede' => 'Frau',
'nachname' => 'Mustermann',
]);
$htmlOutput = $view->render('email.php');
echo strlen($htmlOutput) . ' Zeichen gerendert.';
Verwendung im Yaf-Controller-Kontext
<?php
class IndexController extends Yaf_Controller_Abstract
{
public function indexAction()
{
// Yaf stellt $this->getView() als Yaf_View_Simple bereit
$view = $this->getView();
$view->assign('title', 'Willkommen');
$view->assign('items', ['PHP', 'Yaf', 'MVC']);
// Das Template wird automatisch aus views/index/index.phtml geladen
}
}
// Wichtig · Fallstricke
Sicherheit: Yaf_View_Simple führt keinerlei automatisches HTML-Escaping durch. Alle Variablen, die in Templates ausgegeben werden, müssen manuell mit htmlspecialchars() oder gleichwertigen Funktionen gesichert werden, um XSS-Angriffe zu verhindern.
Fallstrick: Da Templates als reguläre PHP-Dateien eingebunden werden, haben sie Zugriff auf alle zugewiesenen Variablen als lokale Variablen. Werden Variablen mit gleichnamigen internen Bezeichnern (z. B. $this) zugewiesen, kann das zu unerwarteten Verhalten führen.
Yaf-Extension erforderlich: Yaf_View_Simple setzt die installierte und aktivierte yaf-PHP-Extension voraus. Sie ist kein Bestandteil der PHP-Standardbibliothek.