リソースプラグイン リソースプラグインは、テンプレートソースや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() も参照してください。