这是我将PHP对象暴露给Smarty模板的两个选项。我知道两者之间存在语法差异,但我找不到任何关于为什么要使用其中一个的信息。任何人都可以解释这些差异吗?
谢谢,
詹姆斯。
答案 0 :(得分:2)
如果使用register_object(),则可以限制可以调用的方法,这也意味着您使用不同的(更像Smarty的)语法调用方法:
<?php
// 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'));
模板:
{* access our registered object *}
{foobar->meth1 p1='foo' p2=$bar}
答案 1 :(得分:2)
我认为这个smarty文档页面可以帮助您:http://www.smarty.net/manual/en/advanced.features.php#advanced.features.objects
我认为我不能说比那里说的更多;基本上:
assign
允许您将数据发送到模板;其中一些数据可以是对象register_object
允许更多;最重要的似乎是您可以从模板文件中指定可以使用对象的哪些方法第二种可能性还提供了更像“类似对象”的语法,看起来像这个(从文档复制的示例):
{* 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)}
所以,我会说:选择最适合您需求的那个; - )