リソースプラグイン
リソースプラグインは、テンプレートソースやphpスクリプトのコンポーネントをSmartyに提供する一般的な方法を意味します。(例: データベース, LDAP, 共有メモリ, ソケット等)
各種リソースのために登録する必要がある4つの関数があります。これらの関数の最初のパラメータには要求されたリソースが渡され、最後のパラメータにはSmartyのオブジェクトが渡されます。残りのパラメータは関数によって異なります。
bool smarty_resource_name_source (string $rsrc_name, string &$source, object &$smarty)
bool smarty_resource_name_timestamp (string $rsrc_name, int &$timestamp, object &$smarty)
bool smarty_resource_name_secure (string $rsrc_name, object &$smarty)
bool smarty_resource_name_trusted (string $rsrc_name, object &$smarty)
1つめの関数ではリソースを取得します。第2パラメータはその結果が格納される、参照渡しされた変数です。戻り値には、リソースの取得が成功すればtrue、それ以外はfalseを返します。
2つめの関数では要求されたリソースが最後に修正された時間(UNIXタイムスタンプ)を取得します。第2パラメータはタイムスタンプが格納される、参照渡しされた変数です。タイムスタンプが取得できればtrue、それ以外はfalseを返します。
3つめの関数では要求されたリソースがセキュアであるかどうかに応じてtrue又はfalseを返します。この関数はテンプレートリソースのためにだけ用いられますが、定義する必要があります。
4つめの関数では要求されたリソースが信用できるかどうかに応じてtrue又はfalseを返します。この関数は、src属性を持ったinclude_php又はinsertタグによってリクエストされたphpスクリプトのためにのみ使用されます。しかしそれはテンプレートリソースのために定義される必要があります。
詳細は、register_resource(), unregister_resource()の項を参照して下さい。
例 15-10. リソースプラグイン
<?php/* * Smarty plugin * ----- * File: resource.db.php * Type: resource * Name: db * Purpose: データベースからテンプレートを取り出す * ----- */function smarty_resource_db_source($tpl_name, &$tpl_source, &$smarty)
{// ここでデータベースを呼び出し、 // $tpl_source に代入する $sql = new SQL; $sql->query("select tpl_source from my_table where tpl_name='$tpl_name'"); if ($sql->num_rows) { $tpl_source = $sql->record['tpl_source']; return true; } else { return false; }}
function smarty_resource_db_timestamp($tpl_name, &$tpl_timestamp, &$smarty)
{// ここでデータベースを呼び出し、$tpl_timestampに代入する $sql = new SQL; $sql->query("select tpl_timestamp from my_table where tpl_name='$tpl_name'"); if ($sql->num_rows) { $tpl_timestamp = $sql->record['tpl_timestamp']; return true; } else { return false; }}
function smarty_resource_db_secure($tpl_name, &$smarty)
{// 全てのテンプレートがセキュアであると仮定する return true;}
function smarty_resource_db_trusted($tpl_name, &$smarty)
{// テンプレートからは使用しない}
?>