ビュースクリプトをロードし、文字列として出力します。
少し単純化してZend_View
、ビュースクリプトファイル(index.phtmlなど)を取得し、それを内部に含めてHTML出力を生成します。このメソッドを使用するrender()
ことで、追加のビュースクリプト(おそらくnav.phtmlなど)を取得して、親のビュースクリプト内に出力することができます。アイデアは、同じHTMLを何度も繰り返すのではなく、多くのページで1回だけ繰り返される要素をレンダリングすることです。
renderメソッドのコードはZend_View_Abstract
クラスにあり、次のとおりです。
/**
* Processes a view script and returns the output.
*
* @param string $name The script name to process.
* @return string The script output.
*/
public function render($name)
{
// find the script file name using the parent private method
$this->_file = $this->_script($name);
unset($name); // remove $name from local scope
ob_start();
$this->_run($this->_file);
return $this->_filter(ob_get_clean()); // filter output
}
メソッドの実装は_run()
クラスZend_View
にあり、次のとおりです。
/**
* Includes the view script in a scope with only public $this variables.
*
* @param string The view script to execute.
*/
protected function _run()
{
if ($this->_useViewStream && $this->useStreamWrapper()) {
include 'zend.view://' . func_get_arg(0);
} else {
include func_get_arg(0);
}
}
ご覧のとおりrender()
、ビュースクリプト名を取得し、そのファイル名を解決し、出力バッファリングを開始し、ビュースクリプトファイルを含め(これは_run()
メソッドが内部で行うことです)、オプションのフィルターを介して出力を渡し、最後に生成された文字列を返します。
それについての素晴らしい点は、それが呼び出されたビューオブジェクトのプロパティ(変数)を保持することです(それは同じZend_View
オブジェクトであり、異なるビュースクリプトがロードされているだけだからです)。partial()
この点で、独自の変数スコープを持ち、変数を渡すことができるメソッドとは異なります(foreach
データセット上にある場合の単一行のデータなど、より小さな要素のレンダリングに役立ちます)。