PHPで最もメジャーなテンプレートエンジン、Smartyの
次期バージョンが開発スタートしたようです!
まだアルファ版ですが、実質PHPのデファクト
スタンダードにまでなっているテンプレートエンジンの
バージョンアップですので、大期待です。
なお、PHP5専用の様です。(移行済んでますか?
)
バージョン3の基本コンセプトが記載されていたので、
簡単に訳してみます。
原文:
http://smarty-php.googlecode.com/svn/branches/Smarty3Alpha/README
Smarty3 基本コンセプト
・基本的な使い方は変わらない
-
require('Smarty.class.php');
-
$smarty = new Smarty;
-
$smarty->assign('foo','bar');
-
$smarty->display('index.tpl');
おなじみのこれでOK。
・Smartyクラスを大幅にスリム化
大部分の機能はプラグイン化され、必要な機能は
必要な時に読み込まれるようになる。
(lazy-load)
・本物の字句解析エンジン(lexical tokenizer)の導入
これにより大幅に構文解析の精度が向上する。
テンプレート上での数式計算や、
再帰的な関数などが利用可能になる。
・Singletonパターンでの呼び出しに対応。
-
$smarty = Smarty::instance();
という呼び出し方が可能。
常に単一のインスタンスを取得できる。
(注)
Singletonパターンは詳しくはこちら(WikiPedia)
・すべてのプラグインはクラスへ
すべてSmarty_Internal_PluginBaseというクラスを継承。
いままで引数で、&$smartyと渡していたSmartyクラスは、
$this->smarty で使用可能になる。
・PHPテンプレートが使用可能に
Smarty構文を使わないPHPそのもののテンプレートに対応。
-
$smarty->display('php:mytemplate.tpl');
この様に書けば、tplをコンパイルせずPHPとして処理する。
tpl内では、
-
<?= $val ?>
などと書く
ただし、modifierはどうやって使うかなどは考え中。
いまのところ下記の様なアイデアがある。
-
//案1:modifierをロード&実行
-
$this->modifier('truncate',$foo,$args);
-
-
//案2:modifierをPHPコード内でロードする
-
$smarty->load->modifier('truncate','truncate');
-
//テンプレート内で実行;
-
truncate($foo,$args);
・文字列をテンプレート処理することが可能に
displayなどの引数に文字列を渡して処理ができる。
-
$smarty->display('string:This is my template, {$foo}!');
この様に書く。
・その他たくさん
たとえば
キャッシュファイル、コンパイルファイル、
コンフィグファイルのリソース管理や、
テンプレート/関数/変数ごとのキャッシュ、
テンプレートオブジェクトなど。
まだまだ考えてる途中なので、フォーラムを参照して
どんどんアイデアを送ってほしい。
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=14168
今後の動向に注目するしかない!
まだアルファなので変わる可能性は多いにありますが、
これらの機能群だけを見ても楽しみですね。
特に高速化に期待です。
PHPテンプレートの機能は驚きましたが、
CakePHPやSymfonyなどメジャーどころの
フレームワークでは基本的にテンプレートエンジンを
使わずPHPそのものを使ってるので、
そのニーズでの使用を想定してるんでしょうね。
Smartyは2.6から開発がストップしていて、
PHP5に対応する気配がなかったので
自社でPHP5版を作ってしまうべきなのかと
やきもきしてたんですが、これで安心しました。
また逐次動向を報告したいと思います!
関連した記事:
■ 「日本でいちばん社員満足度が高い会社の非常識な働き方」


















ページの先頭に戻る
PHP5.2+Smarty2.6で開発していますが
問題なく使えますよ
>Eru さん
あ、はい、弊社でもPHP5.2 + Smarty2.6で開発しています。
Smarty2.6がPHP5で書かれていないのでStrictエラーが出ることや、
新しい機能開発が止まってしまっていることを気にしていました。
Smarty、とてもいいんですがもうちょっと速く&拡張性高くなってほしいです。
後継として派生したSmarty-LightやFlatFrogやSimplateも止まってしまいましたし。。。