PHPテンプレートエンジン HtmlTemplate for PHP
HTML template for PHP は軽量なphpのテンプレートエンジンです。
htmltemplate.inc ファイル1つで実装できてとってもお手軽。
テンプレートの書き方もシンプルでわかりやすいです。
機能は置換->表示、分岐、繰り返しのみで、とてもシンプルです。
元々は作者(Hiroshi Ayukawaさん)のサイト(PHP開発日誌)で配布されていたのですが、今は閉鎖されています。
作者の方によるバージョンアップはされていないようです。(最終更新が2003年)
現在は、SouceForgeで配布されています。ライセンスはBSDとあります。(ファイルにはArtistic License version 2.0って書いてあるど)
PHP4とPHP5用があります。PHP4用しか使ったことないです。
使い方のメモ
簡単な使い方
- PHP側
-
$data_1 = 'あいうえお'; $data_2 = array( 'data_a'=>'AAAA', 'data_b'=>'BBBB' ); tmpl_src = array( 'data_1'=>$data_1, 'data_2'=>$data_2); htmltemplate::t_include('tmplname.html', $tmpl_src);
- テンプレート側
-
<html> ~省略~ <p>データ1:{val data_1}</p> <p> データ2-A:{val data_2/data_b}<br /> データ2-B:{val data_2/data_b} </p> ~省略~ </html>
- 出力結果
-
<html> ~省略~ <p>データ1:あいうえお</p> <p>データ2:abcde</p> ~省略~ </html>
API
-
htmltemplate::t_include(テンプレートファイルのパス, テンプレートに渡す変数);
-
テンプレートを指定して、適用後、画面に出力する。
テンプレートファイルの拡張子はなんでもよい。
-
htmltemplate::t_buffer(テンプレートファイルのパス, テンプレートに渡す変数);
-
htmltemplate::t_buffer(テンプレートファイルのパス, テンプレートに渡す変数);
テンプレートを指定して、適用後の出力結果を返す。
画面に出力は行わないので、出力結果を加工しい場合に使用。
テンプレートタグ
データ出力
-
{val 連想配列のキー} -
改行コードを<br />に変換して出力
<p>{val data_1}</p>
-
{rval 連想配列のキー} -
改行コードを変換せずそのまま出力
<p>{rval data_1}</p>
条件分岐
-
<!--{def 連想配列のキー}--> ~ <!--{/def}--> -
空でない場合(空でない配列または空でない文字列)に出力する
<!--{def val_1}--> <p>val_1 は空ではない</p> <!--{/def}-->
-
<!--{ndef 連想配列のキー}--> ~ <!--{/ndef}--> -
空の場合(空の配列または空の文字列)に出力する
※def と組み合わせれば、if~else 文を作れる<!--{ndef val_1}--> <p>val_1 は空</p> <!--{/ndef}-->
-
<!--{vdef 連想配列のキー}--> ~ <!--{/vdef}--> -
defの条件かつ、0またはfalseでない場合に出力
<!--{vdef val_1}--> <p>val_1 は空ではなく0でもfalseでもない</p> <!--{/vdef}-->
繰り返し
-
<!--{each 連想配列のキー}--> ~ <!--{/each}--> -
繰り返す対象の配列は、連想配列ではないインデックスが数値の配列のみ対応。
for($i=0; $i<10; $i++){ $ary[] = array('ary_1'=>'val) } tmpl_data = array( 'data1'=>array( 'val_a'=>$a, 'val_b'=>$b), 'data2'=>$data_2);<!--{each values}--> <p> 配列の値はこのように {val values/val_1} {val values/val_2} 入れ子もできます <!--{each values/val_values}--> {val values/val_values/val_1} {val values/val_values/val_2} <!--{each}--> </p> <!--{each}-->
条件分岐・繰り返しのコメントで囲まれたテンプレートタグを使う場合は、 - と { 、 } と - の間にスペース・タブ・改行等を入れてはいけません。
○ 正しい:
<!--{def val1}-->
× 間違い:
<!-- {def val1} -->
<!–
{def val}
–>


