Php Smarty-寄存器\u对象和按\u ref分配\u之间的差异

Php Smarty-寄存器\u对象和按\u ref分配\u之间的差异,php,smarty,Php,Smarty,这是我向Smarty模板公开PHP对象的两个选项。我知道这两者之间有语法上的差异,但我找不到任何关于为什么要使用其中一个而不是另一个的信息。有人能解释这些区别吗 谢谢 James.如果使用register\u object(),则可以限制可以调用的方法,这也意味着您可以使用不同的(更智能化的)语法调用这些方法: 从我认为smarty的这一页文档可以帮助您: 我不认为我能说的比那里说的更多;基本上: 允许您向模板发送数据;其中一些数据可以是对象 允许更多;最重要的是,您可以指定可以从模板文件中使

这是我向Smarty模板公开PHP对象的两个选项。我知道这两者之间有语法上的差异,但我找不到任何关于为什么要使用其中一个而不是另一个的信息。有人能解释这些区别吗

谢谢

James.

如果使用register\u object(),则可以限制可以调用的方法,这也意味着您可以使用不同的(更智能化的)语法调用这些方法:


我认为smarty的这一页文档可以帮助您:

我不认为我能说的比那里说的更多;基本上:

  • 允许您向模板发送数据;其中一些数据可以是对象
  • 允许更多;最重要的是,您可以指定可以从模板文件中使用对象的哪些方法
第二种可能性还提供了更“类似对象”的语法,如下所示(从文档复制的示例):



所以,我想说:选择一个最适合你需要的;-)

这对Smarty 2来说没问题。对于Smarty 3来说,情况略有变化<代码>寄存器对象变成了
寄存器对象
。看见
<?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}
{* 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)}