# Zend_View_Abstract

`Zend_View_Abstract` ist die Basisklasse auf der `Zend_View` aufbaut; `Zend_View` selbst erweitert Sie einfach und deklariert eine konkrete Implementation der `_run()` Methode (welche durch `render()` aufgerufen wird).

Viele Entwickler finden das Sie `Zend_View_Abstract` erweitern wollen um eigene Funktionalitäten hinzuzufügen und daraus folgend in Probleme mit dessen Design laufen, welches eine Anzahl an privaten Membern enthält. Dieses Dokument zielt darauf ab die Entscheidung hinter diesem Design zu erklären.

`Zend_View` ist etwas wie eine Anti-Template Maschine und verwendet deswegen PHP nativ für sein Templating. Als Ergebnis ist alles von PHP vorhanden und View Skripte erweitern Ihre aufrufendes Objekt.

Es ist dieser letzte Punkt der relevant für die Design Entscheidung war. Intern macht `Zend_View::_run()` folgendes:

    protected function _run()
    {
        include func_get_arg(0);
    }

Als solches, haben die View Skripte Zugriff auf das aktuelle Objekt (`$this`), und jede Methode oder jeden Member dieses Objekts. Da viele Operationen von Membern mit limitierter Sichtbarkeit abhängen, führt das zu einem Problem: Das View Skript können potentiell Aufrufe zu solchen Methoden tätigen, oder kritische Eigenschaften direkt ändern. Angenommen ein Skript überschreibt `$_path` oder `$_file` unabsichtlich -- jeder weitere Aufruf zu `render()` oder View Helfern würde fehlschlagen!

Glücklicherweise hat PHP 5 eine Anwort auf das mit seiner Deklaration der Sichtbarkeit; Auf private Member kann nicht durch Objekte zugegriffen werden wenn eine bestehende Klasse erweitert wird. Das führt zum aktuellen Design: Da `Zend_View` `Zend_View_Abstract` erweitert sind View Skripte limitiert auf protected und public Methoden und Member von `Zend_View_Abstract` -- was effektiv die Aktionen beschränkt die durchgeführt werden können, und es erlaubt kritische Bereiche vor Missbrauch durch View Skripte zu schützen.