Smarty3 特徴など
Smarty3の特徴やSmarty2からの変更点などを書いてみました。
特徴
Smarty3の使い方
呼び出し方法やテンプレートの記述の方法など今まで通り使うことができます。
使う側は意識することは特にありません。
しかし、内部的には組み込み関数やSmartyメソッドなどもすべてクラス化しプラグイン化していて、必要なものは必要な時に呼び出すということになっていて、Smarty2より動作が早いです。
テンプレートにPHPコードが使えるようになった
今まではタグベースのテンプレートしか使えなかったのですが、PHPのコードをテンプレートとして使えるようになりました。
使い方です。
1 | $smarty->display('php:index.tpl'); |
テンプレートの前に「php:」という文字列があります。これを指定することによりPHPコードとして認識させることができます。PHPコードでも関数や修飾子を使えます。
新機能
テンプレートタグに計算式が書けるようになった
構文解析が強化されたことにより、演算機能使えるようになりました。PHPの関数も使用可能です。
1 2 3 4 5 6 7 8 9 10 11 | {$x = 2} {$y = 3} {$z = $x + $y} <p>{$x}+{$y}={$z}</p> {$r = 3} <p> 半径{$r}の、<br /> 円周:{2 * pi() * $r}<br /> 面積:{pi() * pow($r, 2)}<br /> </p> |
実行結果
1 2 3 4 5 | 2+3=5 半径3の、 円周:18.849555921539 面積:28.274333882308 |
{assign}で配列を定義できるようになりました
Smartyで配列の定義ができるようになりました。
1 2 3 | {assign var=foo value=[1,2,3]} {assign var=foo value=['y'=>'yellow','b'=>'blue']} {assign var=foo value=[1,[9,8],3]} |
{for}タグ,{while}タグが追加されました
{for}タグ,{while}タグが追加され、{foreach}がPHPと同様に書けるようになりました。
{for}タグ
1 2 3 4 5 6 7 8 9 10 | その1 {for $x = 1; $x <= 9; $x++} {$x} {/for} その2 {assign var=hoge value=[a,b,c,d,e]} {for $v in $hoge} {$v} {/for} |
{while}タグ
1 2 3 | {while $i<10} {$i} {/while} |
{for}タグ,{while}タグが追加されループ処理がやりやすくなったり、{assign}が配列指定が可能になったりそういう部分の改善はうれしいです。
これから使っていきたいと思います。
Author Profile
スターフィールド編集部
SHARE