最終更新: 2007-11-23 (金) 23:25:47
このページをDeliciousに追加 このページをはてなブックマークに追加 このページをlivedoor クリップに追加 このページをYahoo!ブックマークに追加

Zend Framework のテンプレートエンジンに Speedy を組み込む

目次

概要

Speedy は、 PHP そのものをテンプレートエンジンとして使う際に便利な関数を集めたライブラリです。 拡張モジュール版と PHP スクリプト版の両方が用意されています。 Speedy は主に以下のような機能を提供してくれます。

  • htmlspecialchars($str, ENT_QUOTES) 相当の h() 関数など、短い名前の関数
  • テンプレートの変数のシンボルテーブル (スコープ) を指定して include できる、speedy() 関数

この Speedy を Zend Framework で利用するためのコンポーネントを作ってみました。 標準の Zend_View では、

<?php echo $this->escape($this->foo) ?>

のようにビュースクリプトに書かなければなりませんが、このコンポーネントを使えば、

<?=h($foo)?>

のように簡潔に書くことができます *1。 Zend_View_Abstract クラスを継承しているので、Zend_View のメソッドやヘルパーもそのまま使えます *2

インストール

アーカイブをダウンロードし、 include_path の通ったディレクトリで展開して下さい。
(sample/library のような各アプリケーションの library ディレクトリや、 ZendFramework-1.0.2/library ディレクトリなどで。)

$ cd ZendFramework-1.0.2/library
$ tar xvfz Revulo_View_Speedy-0.1.tar.gz

さらに、Speedy の拡張モジュールをビルド&インストールして下さい。

$ wget http://www.opendogs.org/pub/php_speedy-0.1.0.tgz
$ tar xvfz php_speedy-0.1.0.tgz
$ cd php_speedy-0.1.0
$ phpize
$ ./configure CFLAGS="-O2"
$ make
$ sudo make install

拡張モジュールがインストールできない環境の場合は、 Speedy のアーカイブに含まれている speedy.php を、 include_path の通ったディレクトリにコピーして下さい。

使い方

省略記法が使えること以外は、標準の Zend_View と使い方は同じです。

 

このコンポーネントは ViewRenderer ヘルパー経由で登録して使います。 例えばブートストラップ (index.php) 中で、 フロントコントローラのインスタンスを作成した後に、 以下のように登録することができます。

$view = new Revulo_View_Speedy();
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$viewRenderer->setView($view);

これで、ビュースクリプト内で省略記法が使えるようになります。

 

その他のタイミングで登録したい場合は、 ViewRenderer ヘルパーのマニュアル を参照して下さい。

サンプル

動作確認用に簡単なサンプルを用意しました。 アーカイブをダウンロードし、適当なディレクトリで展開して下さい。

$ cd Speedy
$ tar xvfz Revulo_Sample_Speedy-0.1.tar.gz

あとは http://…/Speedy/html/ のような URL にアクセスすれば試すことができます。

ダウンロード

履歴

  • Version 0.1 (2007/11/23)
    • 初公開
*1 $this-> を省略する機能が不要であれば、index.php あたりで普通に require_once 'speedy.php'; もしくは dl('speedy.so'); すればよいです。
*2 実は今まで通り $this-> を使った表記も可能なので、完全に Zend_View の上位互換になっています。

(Counter:1, Today:1, Yesterday:0)
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   最終更新のRSS