Get Smarty

Donate

Donate Bitcoin Bitcoin
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

Buy cheap glasses from Cheapglasses123.com and save up to 80%.

Where to buy prescription glasses? GlassesPeople.com is your best choice!

Where to buy discount wedding dresses and cheap smart dresses free shipping - Weddingdresstrend.com

Find Wedding Dresses Online at Canada from Ca-dress.com

Discount Wedding Dresses at EvWedding.com

soccer kp is New 2016 Nike Mercurial Superfly V soccer cleats from soccerkpkp.com

Advertisement

Chapter 15. 拡張機能

オブジェクト

Smarty は、テンプレートから PHP の オブジェクト へのアクセスを許可しています。オブジェクトにアクセスするには2つの方法があります。

  • 1つはテンプレートに オブジェクトを登録 し、カスタム関数 と似た構文を用いてアクセスする方法です。

  • もう1つの方法は assign() を用いてテンプレートにオブジェクトを割り当て、 他の割り当てられた変数のようにオブジェクトにアクセスする方法です。

1つめのメソッドは素晴らしいテンプレート構文を持っています。 それはとてもセキュアで、 登録されたオブジェクトはいくつかのメソッドやプロパティを制限する事が出来ます。 しかし繰り返しの処理やオブジェクトの配列への割り当て等の事が出来ません。 あなたのニーズによって選択するメソッドは決まりますが、 テンプレート構文を最小限守るには必ず1つめのメソッドを使用して下さい。

$security が有効の時、('_' から始まる) プライベートメソッドや関数にはアクセス出来ません。 もしメソッドとプロパティで同じ名前が存在する場合、メソッドが優先されます。

第3パラメータにメソッドやパラメータをリストした配列を与える事でアクセスを制限できます。

デフォルトではテンプレートからオブジェクトに渡されたパラメータは カスタム関数 によって同じ方法で渡されます。 連想配列は第1パラメータとして渡され、 smarty オブジェクトは第2パラメータとして渡されます。 もし古いオブジェクトパラメータの渡し方のように各引数を一度に渡したいなら、第4パラメータに FALSE を指定します。

任意の第5パラメータは formatTRUE の時だけ影響し、 ブロックとして扱われるべきオブジェクトのメソッドのリストを格納します。 これはこれらのメソッドがテンプレート内に終了タグ ({foobar->meth2}...{/foobar->meth2}) を持つことを意味し、メソッドへのパラメータは block-function-plugins へのパラメータと同じ構文となります。つまり、4つのパラメータ $params$content&$smarty および &$repeat を持ち、ブロック関数プラグインのように振る舞います。

Example 15.1. 登録または割り当てられたオブジェクトを使用する


<?php
// オブジェクト

class My_Object {
  function meth1($params, &$smarty_obj) {
    return 'this is my meth1';
  }
}

$myobj = new My_Object;

// オブジェクトを (参照で) 登録します
$smarty->register_object('foobar',$myobj);

// いくらかのメソッド又はプロパティを制限したい場合、それらを配列の値としてリストします
$smarty->register_object('foobar',$myobj,array('meth1','meth2','prop1'));

 // 古いオブジェクトパラメータの形式を使いたい場合、booleanのfalseを渡します。
$smarty->register_object('foobar',$myobj,null,false);

// オブジェクトを割り当てる事が可能です(できれば参照渡しで)
$smarty->assign_by_ref('myobj', $myobj);

$smarty->display('index.tpl');
?>

  

そして index.tpl でオブジェクトにアクセスするには以下のようにします。


{* 登録されたオブジェクトにアクセスします *}
{foobar->meth1 p1='foo' p2=$bar}

{* outputに割り当てる事が可能 *}
{foobar->meth1 p1='foo' p2=$bar assign='output'}
the output was {$output}

{* 割り当てたオブジェクトにアクセスします *}
{$myobj->meth1('foo',$bar)}

  

register_object() および assign() も参照してください。

Comments
No comments for this page.
Post a Comment
All comments are moderated. Support questions are ignored, use the forums instead.
Author:
Email: (not shown)
What is 13 plus 18? (Are you human?)

Advertisement