PHPプロ!TIPS+
テンプレート・エンジンSimplateを使ってみよう
PHPのテンプレート・エンジンではSmartyが有名です。SimplateはSmartyテンプレート・エンジンを参考にして、PHP extensionとして動作するようにしたテンプレート・エンジンです。Smartyに比べて機能は制限されますが、非常に高速に動作します。もし Webページへのアクセス速度を向上させたいのなら、Simplateを使ってみてはいかがでしょうか。
まずは、こちらからSimplateをダウンロードし、インストールしてみましょう。各環境に合わせてコンパイル等を行い、php.iniファイルでextensionとして読み込みます。なお、上記サイトではWindows用DLLファイル、Linux用RPMなどをダウンロード可能なサイトも紹介されています。INIファイルでは、以下のような記述になります。
Windows extension=php_simplate.dll Linux extension=simplate.so
使い方はほぼSmartyとほぼ同様です。ただし、テンプレートにおけるデフォルトのデリミタは <{ と }> になります。また、機能が制限されている分、ロジックとテンプレートをSmartyより明確に分離する必要があります。
それでは、簡単なコードを見ていきましょう。
[ロジック]
<?php
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
$simplate = new Simplate();
$simplate->template_dir = 'template';
$simplate->compile_dir = 'template_c';
$var1 = "Hello World";
$var2 = "Asial";
$array1 = array('日', '月', '火', '水', '木', '金', '土');
$simplate->assign('var1', $var1);
$simplate->assign('var2', $var2);
$simplate->assign('array1', $array1);
$simplate->display('index.tpl');
?>
[テンプレート]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p><{$var1}></p>
<p><{$var2}></p>
<ul>
<{foreach from=$array1 key=key item=item}>
<li><{$item}></li>
<{/foreach}>
</ul>
</body>
</html>
デリミタは以下のようにして変更することも可能です。
<?php
$simplate->left_delimiter = '{';
$simplate->right_delimiter = '}';
?>
実行速度をPHP5.2.2で比較したところ、Simplateの方が5倍以上早い結果となりました。Smartyの修正子のような機能はありませんが、最新バージョンではprefilter、postfilterやテンプレート上でのinclude fileも利用でき、実用上便利な機能も備わっています。機会があれば、試してみてください。
バックナンバーについて
TIPS-MLは、毎週金曜日に更新され、新しい記事が掲載されます。





ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。