導入Zend_View は、モデル - ビュー - コントローラ パターンにおける 「ビュー」として働くクラスです。 ビューのスクリプトを、モデルおよびコントローラから分離するために存在します。 このクラスでは、 ヘルパーシステム、出力のフィルタリングおよび変数のエスケープ機能を提供します。 Zend_View は、テンプレートシステムに対しては特にこだわりはありません。 テンプレート言語として PHP を使用するか、 あるいは他のテンプレートエンジンのインスタンスを作成して、 それをビュースクリプトの中で操作できます。 基本的に、Zend_View を使用する際には 2 つの段階をとることになります。 1. コントローラスクリプトが Zend_View のインスタンスを作成し、 そのインスタンスに変数を代入します。 2. コントローラが Zend_View に対して適切なビューをレンダリングするように指示し、 それによってコントローラがビュースクリプトを制御します。 そこでビューの出力が作成されます。 コントローラスクリプト単純な例として、本の一覧を扱うコントローラがあることにしましょう。 そのデータをビューに表示することを考えます。 コントローラスクリプトは、おそらくこのようになるでしょう。
ビュースクリプト次に必要なのは、関連付けるビュースクリプト "booklist.php" です。 これは一般的な PHP スクリプトと同じですが、ひとつだけ違いがあります。 Zend_View インスタンスのスコープで実行されるということです。 つまり $this への参照は、Zend_View のインスタンスのプロパティやメソッドを指すことになるのです (コントローラによってインスタンスに代入された変数は、 Zend_View インスタンスの public プロパティとなります)。 したがって、基本的なビュースクリプトはこのようになります。
変数の出力時に、"escape()" メソッドでエスケープ処理をしていることに注意しましょう。 オプションZend_View のオプションを設定すると、 ビュースクリプトの振る舞いを変更できます。
ビュースクリプトでの短いタグ我々が用意する例では、PHP の長いタグ <?php を用います。 我々はまた、» 制御構造に関する別の構文の使用に賛成します。 これらはビュースクリプトを書く際に便利なものです。 より簡潔に書くことができ、文を1行にまとめられ、 HTML 内で括弧を捜す必要を削減するからです。 以前の版では、ビュー・スクリプトをわずかにより冗長にしないように、 我々はしばしば短いタグ (<? 及び <?=)を使うことを推奨しました。 しかしながら、 php.ini の short_open_tag 設定のデフォルト値は製品において、または共有ホストでは一般的にオフです。 その結果、それらの使用は全く移植可能ではありません。 もしビュースクリプト内で XML のテンプレート、 短い形式の開始タグは検証エラーの元となります。 結局、 short_open_tag がオフの時に短いタグを使うと、 ビュー・スクリプトはエラーを起こすか、または単純にビューアーに PHP コードを返します。 もしもこれらの警告にもかかわらず、「短いタグを使いたいけれど設定でそれが無効になっている」 場合は、次のいずれかの方法を使用します。
Warning
ビューストリームラッパーによるパフォーマンスの低下ストリームラッパーを使用すると、アプリケーションのパフォーマンスは おそらく 低下するでしょう。 しかし、実際のところどれくらい低下するのかについては はっきりと数値化することはできません。 短いタグを有効にしてしまうか、 スクリプトを書き換えてすべて完全なタグにしてしまう、 あるいはコンテンツのキャッシュをうまく行うなどの対策を推奨します。 ユーティリティメソッド通常は、 assign() と render()、 あるいはフィルタ、ヘルパー、スクリプトのパス用の設定メソッドだけで十分事足りるでしょう。 しかし、Zend_View を独自に拡張したい場合や その内部にアクセスしたい場合のために、さらにいくつかのメソッドを用意しています。
|