鍍金池/ 教程/ PHP/ Smarty對象
Smarty安裝
Smarty insert
Smarty 建立緩存
Smarty調(diào)試控制臺
Smarty if,elseif,else
Smarty include_php
Smarty多個緩存
Smarty方法
Smarty section,sectionelse
Smarty注釋代碼
Smarty屬性
Smarty緩沖處理函數(shù)
Smarty變量調(diào)節(jié)器
Smarty函數(shù)
Smarty組合修改器
Smarty雙引號里值的嵌入
Smarty預過濾器
Smarty foreach,foreachelse
Smarty include
Smarty Caching緩存
Smarty變量
Smarty assign用法
Smarty控制插件輸出緩沖
Smarty從配置文件讀取的變量
Smarty對象
Smarty literal
Smarty緩存集合
Smarty教程
Smarty display方法
Smarty自定義函數(shù)
Smarty配置文件
Smarty擴展設(shè)置
Smarty數(shù)學運算
Smarty輸出濾鏡
Smarty fetch方法

Smarty對象

Objects

對象

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

 

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

 

你可以限制成員和函數(shù),但是外解可以通過列舉它們?yōu)橐粋€第三注冊變量的數(shù)組的方式來訪問它。

 

一般情況下,參數(shù)通過模板傳遞給對象的方法和自定義函數(shù)獲得參數(shù)的方法是一樣的。一個混合數(shù)組作為第一個參數(shù)傳遞,而SMARTY對象作為第二個。如果你想像傳統(tǒng)的對象參數(shù)一樣一次傳遞一個參數(shù),設(shè)置第四個參數(shù)為 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.yiibai.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)}