2010年1月8日金曜日

PHPがテンプレート言語っぽいのになぜそれでもテンプレートエンジンを使うのか

それが合理的だからです

もし合理的でない場合は使う必要がないだけです。

例えばエスケープ

生のPHPはHTMLのエスケープ処理がされない

$name = '<script>';
echo $name; #=> <script>
//CakePHPの場合
echo h($name); #=> &lt;script&gt;

//Twig (デフォルトでエスケープするよう設定できる)
{{name}}
//Smarty
{$name|escape}
このサンプルだけだとあまりメリットを感じないかもしれないけど、大抵の場合エスケープはしないといけないし、他にもnumber_formatなど整形する関数やヘルパなどを使うと思います。そのときに関数をe(h(g(d(f($name))))なんて書いて括弧の数が合わずにエラーを出したりするより、{$name|truncate|escape}と書いた方が読みやすい。

デフォルトでエスケープするのが主流になりそう

今知ってる範囲ではRails3では(2.3でも設定で可)デフォルトがエスケープ処理になり、直接データを表示したい時はrawを使うようになりました。Smartyもそうなるんじゃないかなーと勝手に思ってます。Twigは最近知ったテンプレートエンジンですが、なかなか興味深いですね!趣味でWeb制作をする人も多い世の中なので、デフォルトでエスケープするようになる方がいいし、仕事でもその方が効率がいいです。インジェクション対策の一つですね。

理由もなくSmartyを嫌うのはやめて

一時期Smartyが流行り、そして脱テンプレートエンジンが流行ったと認識してますが、どちらにもメリットデメリットがあると思います。問題はMVCのVのところで、テンプレートエンジンを使った方が、Vが行うべきタスクにより集中でき効率と品質が上がるかであって、そうでもないのなら使わなければいいだけの話です。PHP自体がテンプレート言語みたいなものだから、と思い込んで使わないというのは変です。

0 件のコメント: