Get Smarty

Donate

Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

リソースプラグイン

リソースプラグインは、テンプレートソースや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;
 
  • 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 スクリプトコンポーネントのみです。 しかし、テンプレートリソースであっても定義する必要があります。

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)
{
    // テンプレートでは使用しません
}
?>

     

registerResource() および unregisterResource() も参照してください。

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors