第 15章拡張機能
オブジェクト
Smarty は、テンプレートから PHP の オブジェクト へのアクセスを許可しています。オブジェクトにアクセスするには2つの方法があります。
もう1つの方法は assign() を用いてテンプレートにオブジェクトを割り当て、 他の割り当てられた変数のようにオブジェクトにアクセスする方法です。
1つめのメソッドは素晴らしいテンプレート構文を持っています。 それはとてもセキュアで、 登録されたオブジェクトはいくつかのメソッドやプロパティを制限する事が出来ます。 しかし繰り返しの処理やオブジェクトの配列への割り当て等の事が出来ません。 あなたのニーズによって選択するメソッドは決まりますが、 テンプレート構文を最小限守るには必ず1つめのメソッドを使用して下さい。
$security が有効の時、('_' から始まる) プライベートメソッドや関数にはアクセス出来ません。 もしメソッドとプロパティで同じ名前が存在する場合、メソッドが優先されます。
第3パラメータにメソッドやパラメータをリストした配列を与える事でアクセスを制限できます。
デフォルトではテンプレートからオブジェクトに渡されたパラメータは カスタム関数 によって同じ方法で渡されます。 連想配列は第1パラメータとして渡され、 smarty オブジェクトは第2パラメータとして渡されます。 もし古いオブジェクトパラメータの渡し方のように各引数を一度に渡したいなら、第4パラメータに FALSE を指定します。
任意の第5パラメータは format が TRUE の時だけ影響し、 ブロックとして扱われるべきオブジェクトのメソッドのリストを格納します。 これはこれらのメソッドがテンプレート内に終了タグ ({foobar->meth2}...{/foobar->meth2}) を持つことを意味し、メソッドへのパラメータは block-function-plugins へのパラメータと同じ構文となります。つまり、4つのパラメータ $params、 $content、 &$smarty および &$repeat を持ち、ブロック関数プラグインのように振る舞います。
register_object() および assign() も参照してください。