リソースプラグイン
リソースプラグインは、テンプレートソースや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つめの関数 source() ではリソースを取得します。
第2パラメータ $source
は参照で渡され、ここに結果が格納されます。
戻り値は、リソースの取得に成功すれば &true;、
それ以外は &false; となります。
2つめの関数 timestamp() は、
要求されたリソースが最後に修正された時間(UNIXタイムスタンプ)を取得します。
第2パラメータ $timestamp は参照で渡され、
ここにタイムスタンプが格納されます。タイムスタンプが取得できれば
&true;、それ以外は &false; を返します。
3つめの関数 secure() は、
要求されたリソースがセキュアであるかどうかに応じて &true; 又は &false; を返します。
この関数はテンプレートリソースのためにだけ用いられますが、定義する必要があります。
4つめの関数 trusted() は、
要求されたリソースが信用できるかどうかに応じて &true; 又は &false; を返します。
この関数を使用するのは、
{include_php} タグあるいは
{insert}
タグで src 属性によって要求された PHP
スクリプトコンポーネントのみです。
しかし、テンプレートリソースであっても定義する必要があります。
リソースプラグイン
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)
{
// テンプレートでは使用しません
}
?>
]]>
register_resource()
および
unregister_resource()
も参照してください。