コールバック関数を設定します。Sigma のテンプレートには、関数コールを含めることができます。 つまり、テンプレートの作者は、func_h1("h1 に埋め込むもの") のように特別なプレースホルダをテンプレートに追加することができるのです。 Sigma はテンプレート内のこれらのプレースホルダをパースし、 それに対応するコールバック関数を定義することができます。 コールバックは、それを含むブロックが parse() されたときに自動的にコールされます。
これらのテンプレート関数の引数には、変数プレースホルダを含めて func_translate('Hello, {username}') のようにすることができます。 しかし、ブロックや別の関数コールは含められないことに注意しましょう。
コールバックを使用して、(表示周り以外の) ロジックをテンプレートに追加してはいけません。 大量のコールバックでロジックを実装することは、車輪の再発明になってしまいます。 その代わりに、XML/XSLT やネイティブの PHP スクリプト、 あるいはその他のテンプレートエンジンの使用を考慮しましょう。
スクリプト
<?php function h_one($arg) { return '<h1>' . $arg . '</h1>'; } // ... $tpl = new HTML_Template_Sigma(' ... '); // ... $tpl->setCallbackFunction('h1', 'h_one'); // ... $tpl->show() ?> |
... func_h1('H1 Headline') ... |
テンプレートで使用する関数名。
コールバック。call_user_func_array() で使用できる任意の形式。
TRUE の場合は、関数コールの前に引数内の変数置換を行いません。
表 47-1PEAR_Error の値
エラーコード | エラーメッセージ | 原因 | 対応 |
---|---|---|---|
SIGMA_INVALID_CALLBACK | Callback does not exist | $callback は既存の関数あるいはメソッドではありません | スペルを調べます。また、メソッドコールバックを使用する場合はオブジェクトのインスタンスが作成されているかどうかを調べます |