Programmer's Reference Guide
| Zend_View |
導入
Zend_View は、モデル - ビュー - コントローラ パターンにおける 「ビュー」として働くクラスです。 ビューのスクリプトを、モデルおよびコントローラから分離するために存在します。 このクラスでは、 ヘルパーシステム、出力のフィルタリングおよび変数のエスケープ機能を提供します。
Zend_View は、テンプレートシステムに対しては特にこだわりはありません。 テンプレート言語として PHP を使用するか、 あるいは他のテンプレートエンジンのインスタンスを作成して、 それをビュースクリプトの中で操作することができます。
基本的に、Zend_View を使用する際には 2 つの段階をとることになります。 1. コントローラスクリプトが Zend_View のインスタンスを作成し、 そのインスタンスに変数を代入します。 2. コントローラが Zend_View に対して適切なビューをレンダリングするように指示し、 それによってコントローラがビュースクリプトを制御します。 そこでビューの出力が作成されます。
コントローラスクリプト
単純な例として、本の一覧を扱うコントローラがあることにしましょう。 そのデータをビューに表示することを考えます。 コントローラスクリプトは、おそらくこのようになるでしょう。
<?php
// 本の著者およびタイトルを取得するためにモデルを使用します
$data = array(
array(
'author' => 'Hernando de Soto',
'title' => 'The Mystery of Capitalism'
),
array(
'author' => 'Henry Hazlitt',
'title' => 'Economics in One Lesson'
),
array(
'author' => 'Milton Friedman',
'title' => 'Free to Choose'
)
);
// 本のデータを Zend_View インスタンスに代入します
Zend_Loader::loadClass('Zend_View');
$view = new Zend_View();
$view->books = $data;
// "booklist.php" というビュースクリプトをレンダリングします
echo $view->render('booklist.php');
ビュースクリプト
次に必要なのは、関連付けるビュースクリプト "booklist.php" です。 これは一般的な PHP スクリプトと同じですが、ひとつだけ違いがあります。 Zend_View インスタンスのスコープで実行されるということです。 つまり $this への参照は、Zend_View のインスタンスのプロパティやメソッドを指すことになるのです (コントローラによってインスタンスに代入された変数は、 Zend_View インスタンスの public プロパティとなります)。 したがって、基本的なビュースクリプトはこのようになります。
<?php if ($this->books): ?>
<!-- 本の一覧 -->
<table>
<tr>
<th>著者</th>
<th>タイトル</th>
</tr>
<?php foreach ($this->books as $key => $val): ?>
<tr>
<td><?php echo $this->escape($val['author']) ?></td>
<td><?php echo $this->escape($val['title']) ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php else: ?>
<p>表示する本がありません。</p>
<?php endif;
変数の出力時に、"escape()" メソッドでエスケープ処理をしていることに注意しましょう。
オプション
Zend_View のオプションを設定すると、
ビュースクリプトの振る舞いを変更することができます。
-
basePath:は スクリプトやヘルパー、そしてフィルタを配置する基底パスを指定します。 次のようなディレクトリ構成を想定しています。base/path/ helpers/ filters/ scripts/これを設定するには
setBasePath()かaddBasePath()、あるいはコンストラクタのオプションbasePathを使用します。 encoding:はhtmlentities()やhtmlspecialchars()などで使用する文字エンコーディングを表します。 デフォルトは ISO-8859-1 (latin1) です。setEncoding()か、コンストラクタのオプションencodingで設定します。escape:はescape()で使用するコールバックを表します。setEscape()か、コンストラクタのオプションescapeで設定します。filter:は、ビュースクリプトをレンダリングした後で使用するフィルタを表します。setFilter()かaddFilter()、 あるいはコンストラクタのオプションfilterで設定します。strictVars:は、初期化していない変数にZend_Viewからアクセスしようとした際に notice や warning を発生させるようにします。strictVars(true)か、あるいはコンストラクタのオプションstrictVarsで設定します。
ユーティリティメソッド
通常は、assign() と render()、
あるいはフィルタ、ヘルパー、スクリプトのパス用の設定メソッドだけで十分事足りるでしょう。
しかし、Zend_View を独自に拡張したい場合や
その内部にアクセスしたい場合のために、さらにいくつかのメソッドを用意しています。
-
getVars()は、設定されているすべての変数を返します。 -
clearVars()は、すべての変数の値を消去します。 ビュースクリプトを再利用する際に、 これまで使用していた変数を残しておきたいときなどに便利です。 -
getScriptPath($script)は、指定したビュースクリプトのパスを取得します。 -
getScriptPaths()は、登録されているすべてのスクリプトパスを取得します。 script paths. -
getHelperPath($helper)は、指定したヘルパークラスのパスを取得します。 -
getHelperPaths()は、登録されているすべてのヘルパーパスを取得します。 -
getFilterPath($filter)は、指定したフィルタクラスのパスを取得します。 -
getFilterPaths()は、登録されているすべてのフィルタパスを取得します。
| Zend_View |
