Twig允许您将数组或对象传递给模板,并为您提供访问两个数据结构成员的相同接口。 所以,例如:
$test = array('foo' => 'foo', 'bar' => 'bar');
将允许您在模板test.foo
和test.bar
现在这个对象的实例将具有相同的效果。这非常棒:)
class test
{
public $foo;
public $bar;
}
使用magic __set和__get方法的对象怎么样?
class test
{
public $properties;
public function __set($name, $value)
{
$this->properties[$name] = $value;
}
public function __get($name)
{
return $this->properties[$name];
}
}
不幸的是,在这种情况下,您无法访问此对象的属性。 我不确定Twig是问题还是PHP本身。
答案 0 :(得分:13)
您还需要实施__isset()
,例如
public function __isset($name) {
return array_key_exists($name, $this->properties);
}
请参阅http://twig.sensiolabs.org/doc/recipes.html#using-dynamic-object-properties