Start · Sprachen · PHP · Referenz · Yaf_View_Simple

Yaf_View_Simple

Klasse

Eingebaute, einfache und schnelle Template-Engine des Yaf-Frameworks, die PHP-Dateien als Templates verwendet.

seit PHP 2.0.0 Kategorie: misc

Signatur

class Yaf_View_Simple implements Yaf_View_Interface

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');
<h1>Hallo, Welt!</h1>

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.';
45 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.