What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
リソースプラグインは、テンプレートソースや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()
も参照してください。