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は、毎週金曜日に更新され、新しい記事が掲載されます。

Tipsꗗy[W 

Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

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

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)