EC studio EC studio 技術ブログ

2008年10月23日投稿者:山本 正喜

Smarty3の開発がスタート!! – PHPニュース

PHPで最もメジャーなテンプレートエンジン、Smartyの
次期バージョンが開発スタートしたようです!

http://www.smarty.net/

まだアルファ版ですが、実質PHPのデファクト
スタンダードにまでなっているテンプレートエンジンの
バージョンアップですので、大期待です。

なお、PHP5専用の様です。(移行済んでますか? ;) )

バージョン3の基本コンセプトが記載されていたので、
簡単に訳してみます。

原文:
http://smarty-php.googlecode.com/svn/branches/Smarty3Alpha/README

Smarty3 基本コンセプト

・基本的な使い方は変わらない

  1. require('Smarty.class.php');
  2. $smarty = new Smarty;
  3. $smarty->assign('foo','bar');
  4. $smarty->display('index.tpl');

おなじみのこれでOK。

・Smartyクラスを大幅にスリム化

大部分の機能はプラグイン化され、必要な機能は
必要な時に読み込まれるようになる。
(lazy-load)

・本物の字句解析エンジン(lexical tokenizer)の導入

これにより大幅に構文解析の精度が向上する。
テンプレート上での数式計算や、
再帰的な関数などが利用可能になる。

・Singletonパターンでの呼び出しに対応。

  1. $smarty = Smarty::instance();

という呼び出し方が可能。
常に単一のインスタンスを取得できる。

(注)
Singletonパターンは詳しくはこちら(WikiPedia)

・すべてのプラグインはクラスへ

すべてSmarty_Internal_PluginBaseというクラスを継承。
いままで引数で、&$smartyと渡していたSmartyクラスは、
$this->smarty で使用可能になる。

・PHPテンプレートが使用可能に

Smarty構文を使わないPHPそのもののテンプレートに対応。

  1. $smarty->display('php:mytemplate.tpl');

この様に書けば、tplをコンパイルせずPHPとして処理する。
tpl内では、

  1. <?= $val ?>

などと書く

ただし、modifierはどうやって使うかなどは考え中。
いまのところ下記の様なアイデアがある。

  1. //案1:modifierをロード&実行
  2. $this->modifier('truncate',$foo,$args);
  3.  
  4. //案2:modifierをPHPコード内でロードする
  5. $smarty->load->modifier('truncate','truncate');
  6. //テンプレート内で実行;
  7. truncate($foo,$args);

・文字列をテンプレート処理することが可能に

displayなどの引数に文字列を渡して処理ができる。

  1. $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 | 2008/12/04 木曜日 14:32:43

>Eru さん

あ、はい、弊社でもPHP5.2 + Smarty2.6で開発しています。
Smarty2.6がPHP5で書かれていないのでStrictエラーが出ることや、
新しい機能開発が止まってしまっていることを気にしていました。

Smarty、とてもいいんですがもうちょっと速く&拡張性高くなってほしいです。
後継として派生したSmarty-LightやFlatFrogやSimplateも止まってしまいましたし。。。

投稿者: Masaki | 2008/12/04 木曜日 18:24:24
投稿者
人気のエントリー
カテゴリー
最近のエントリー
アーカイブ
Copyright© ChatWork, All Rights Reserved. secured by ESET.