KZ_Templateクラス

投稿者: mystral-kk 2009年4月 2日(木) 20:30 JST

GeeklogがHTMLのレンダリングに使用しているのはPHPLIBのTemplateクラスで、Dirkさんが何かのカンファレンスでその制作者に出会ったときに「まだそんなもの使っているの? Smartyを使えよ。」と言われたほどの代物。軽量だが、変数置換などの最低限の機能しかないため、条件分岐やループ構造を単体では実現できず、PHPコードでレンダリングしなければならない。

開発時期が古いためか、コードを読んでも「なぜそんな実装?」と突っ込みたくなる箇所が多い。

このような状況で、Joeさん[*1] さんがCaching Template Library(CTL)を開発・公開した。オリジナルのTemplateクラスに、1. 条件分岐やループ構造を追加 2. デフォルトの変数を定義 3. テンプレートをPHPコードにコンパイル・キャッシュして、実行速度アップを狙った優れものである。MediaGallery-1.6.xはこのCTLがないとインストールすることすらできない。

上記1., 2.はありがたいが、モジュール版PHPが多い日本のホスティングサービスでは、パーミッションの関係で3.でつまずくことが多い。それと、これは私見だが、Geeklogのように各テンプレートファイルのサイズが小さい場合には、コンパイル・キャッシュの恩恵をあまり受けられないように思う。

そこで、CTLからキャッシュ機能を抜き、代わりにdengenさん[*2] が提唱しているTemplateクラスの高速化(file()をfile_get_contents()で、preg_replace()をstr_replace()に置き換えるなど。)と木下さん[*3] が実装したOverRide機能(該当テンプレートファイルがない場合、デフォルトのテーマに自動的にフォールバックする機能)を追加したKZ_Templateクラスを開発した。ダウンロードはこちらから[*4] 。まだ、開発段階なので、いろいろバグが残っていると思われるが、Geeklogのコアファイルを改変しなくても使えるので、それなりの価値はあると思う。

コメント (0件)


Geeklog増殖計画 - KZ_Templateクラス
https://mystral-kk.net/index.php/article/20090402203041560

[*1] http://throwingdice.com/
[*2] http://www.trybase.com/~dengen/log/
[*3] http://www.tktools.jp/
[*4] http://mystral-kk.net/filemgmt/index.php?id=31