PHPテンプレートのコード比較 | PC-Unix弄り始めました。

PHPテンプレートのコード比較

 PHP [jp2.php.net] では数多くの テンプレートエンジン [ja.wikipedia.org] が開発されています。

 テンプレートエンジンを利用することで、Webプログラムの処理部分と出力レイアウト部分を別々に開発できるようになります。
 これは必要なデータが何かを伝えておくだけで、処理部分だけを開発する人とWebページのレイアウトを開発する人が同時期にスタートするできます。

 それだけでなく処理部で変更した変数を、汎用化した出力レイアウトにあてることで、
「ページのレイアウトを変えずに内容だけ変える」ことが可能になり、
Webサイトのレイアウトに一貫性を持たせることが容易になります。


 しかしその種類の豊富さから、勝手が分からず手をつけるにいたり辛くなっているかも知れません。
 ここでは気になったテンプレートエンジンを初歩中の初歩の出力でサンプル表示してみます。



比較するテンプレートエンジン群
テンプレート 特徴
Smarty ( )
 [マニュアル :www.smarty.net]
高機能でテンプレート界の金字塔
Template Lite ( )
 [マニュアル :templatelite.sourceforge.net]
完全Smarty互換
bTemplate ( )
 [マニュアル :massassi.com]
簡単・明瞭・軽量


Smarty 使用例

 Smarty の 公式 [www.smarty.net] からダウンロードしたファイルを解凍し、
libs/ 以下を Smarty/ というディレクトリ名に変更してパスが通るようにします。

PHPファイルソース[test.php]
<?php
require_once 'Smarty/Smarty.class.php'; // パスの通っている Smarty を読み込む

$sm = new Smarty(); // Smartyクラス を作成する

$sm->template_dir = "tpl/"; // テンプレートファイルが格納されているディレクトリパス
$sm->compile_dir = "tpl_p/"; // テンプレートファイルのコンパイル作業をするディレクトリ
// $sm->cache_dir = "tpl_c/"; // テンプレートファイルのキャッシュを格納するディレクトリ、無くても動く
// $sm->config_dir = "tpl_cfg/"; // configファイルが格納されているディレクトリパス、無くても動く

$sm->assign('output_tpl', "出力用データ"); // output_tpl と "出力用データ" を関連付けます

$html_out = $sm->fetch('test.tpl'); // test.tpl を呼び出します
echo $html_out; // test.tpl を出力します

$sm->clear_all_assign(); // 上記の設定を消します
unset($sm); // 変数を消します

// ?>

テンプレートファイルソース[tpl/test.tpl]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html lang="ja">
<head>
</head>
<body>
{ * Smarty用コメント:これは出力されない * }
<!-- HTML用コメント:これは出力される -->
{ $output_tpl }
</body>
</html>

出力ソース
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html lang="ja">
<head>
</head>
<body>

<!-- HTML用コメント:これは出力される -->
出力用データ
</body>
</html>

Template Lite 使用例

 Template Lite の 公式 [sourceforge.net] からダウンロードしたファイルを解凍し、
src/ 以下を TLite/ というディレクトリ名に変更してアップロードします。

 Smarty 互換なので Template_Liteクラス も $sm で宣言しています。

PHPファイルソース[test.php]
<?php
require_once 'TLite/class.template.php';; // パスの通っている Template Lite を読み込む

$sm = new Template_Lite(); // Template_Liteクラス を作成する

$sm->template_dir = "tpl/"; // テンプレートファイルが格納されているディレクトリパス
$sm->compile_dir = "tpl_p/"; // テンプレートファイルのコンパイル作業をするディレクトリ
// $sm->cache_dir = "tpl_c/"; // テンプレートファイルのキャッシュを格納するディレクトリ、無くても動く
// $sm->config_dir = "tpl_cfg/"; // configファイルが格納されているディレクトリパス、無くても動く

$sm->assign('output_tpl', "出力用データ"); // output_tpl と "出力用データ" を関連付けます

$html_out = $sm->fetch('test.tpl'); // test.tpl を呼び出します
echo $html_out; // test.tpl を出力します

$sm->clear_all_assign(); // 上記の設定を消します
unset($sm); // 変数を消します

// ?>

テンプレートファイルソース[tpl/test.tpl]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html lang="ja">
<head>
</head>
<body>
{ * Template Lite用コメント:これは出力されない * }
<!-- HTML用コメント:これは出力される -->
{ $output_tpl }
</body>
</html>

出力ソース
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html lang="ja">
<head>
</head>
<body>

<!-- HTML用コメント:これは出力される -->
出力用データ
</body>
</html>

bTemplate 使用例

 bTemplate を 公式 [massassi.com] からダウンロードしたファイルを解凍し、
bTemplate_0.x/ 以下のファイルを bTemplate/ ディレクトリを作成しコピーしてアップロードします。

PHPファイルソース[test.php]
<?php

require_once 'bTemplate/bTemplate.php'; // パスの通っている bTemplate を読み込む

$btpl = new bTemplate("tpl/"); // bTemplateクラス を作成する

$btpl->set('output_tpl', "出力用データ"); // output_tpl と "出力用データ" を関連付けます

$html_out = $btpl->fetch('test.tpl'); // test.tpl を呼び出します
echo $html_out; // test.tpl を出力します

unset ($btpl); // 変数を消します

// ?>

テンプレートファイルソース[tpl/test.tpl]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html lang="ja">
<head>
</head>
<body>
<tag:output_tpl />
</body>
</html>

出力ソース
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html lang="ja">
<head>
</head>
<body>
出力用データ
</body>
</html>

参考.
 世界のPHPテンプレートエンジン、トップ25 - GIGAZINE [gigazine.net]


追記・追伸:まだ無し