リソースプラグイン

リソースプラグインは、テンプレートソースやPHPスクリプトのコンポーネントを Smarty に提供する一般的な方法と意図されています (例: データベース, LDAP, 共有メモリ, ソケット等)。

各種リソースのために4つの関数を登録する必要があります。 これらの関数の最初のパラメータには要求されたリソースが渡され、 最後のパラメータには Smarty のオブジェクトが渡されます。 残りのパラメータは関数によって異なります。

bool smarty_resource_name_source( $rsrc_name,  
  &$source,  
  &$smarty);  
string $rsrc_name;
string &$source;
object &$smarty;
 
bool smarty_resource_name_timestamp( $rsrc_name,  
  &$timestamp,  
  &$smarty);  
string $rsrc_name;
int &$timestamp;
object &$smarty;
 
bool smarty_resource_name_secure( $rsrc_name,  
  &$smarty);  
string $rsrc_name;
object &$smarty;
 
bool smarty_resource_name_trusted( $rsrc_name,  
  &$smarty);  
string $rsrc_name;
object &$smarty;
 

Example 16.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 に代入します
    $tpl_source = "This is the template text";
    // 成功した場合に true を返します。false を返すと失敗したことになります
    return true;
}

function smarty_resource_db_timestamp($tpl_name, &$tpl_timestamp, &$smarty)
{
    // テンプレートの最終更新時刻の Unix タイムスタンプを
    // $tpl_timestampに代入するためにデータベースを呼び出します
    // これで、再コンパイルが必要かどうかを判断します
    $tpl_timestamp = time(); // この例だと常に再コンパイルとなります!
    // 成功した場合に true を返します。false を返すと失敗したことになります
    return true;
}

function smarty_resource_db_secure($tpl_name, &$smarty)
{
    // 全てのテンプレートがセキュアであるとみなします
    return true;
}

function smarty_resource_db_trusted($tpl_name, &$smarty)
{
    // テンプレートでは使用しません
}
?>

     

register_resource() および unregister_resource() も参照してください。