【发布时间】:2013-12-06 10:09:41
【问题描述】:
Smarty 允许在模板中使用以下语法访问对象属性:
{$object->property}
但是(如果我理解正确的话)这只有在属性可见性为public 时才有可能,否则 Smarty 似乎无法访问它。
在 Java 中,我习惯于创建具有私有属性的对象,并且我通常使用 getter 和 setter 在业务逻辑中读取/写入这些属性。但是,即使我创建了一个具有私有属性的对象,我也可以使用表达式语言在 jsp 中访问它:
${object.property}
这不会在 Smarty 模板中发生,因为无法通过这种方式访问私有属性。所以我必须使用如下语法:
{$object->getProperty()}
这是为什么呢?为什么 Smarty 不像 jsp EL 那样解决问题?
【问题讨论】:
-
我不知道 Smarty,但在 Twig 中
foo.bar导致它检查bar是否是foo的索引或属性,如果不是则检查方法foo::bar()和foo::getBar()自动。如果 Smarty 不这样做……那就不是很聪明。