Twig模板引擎不读取对象属性

mar*_*oss 10 php overloading twig

Twig允许您将数组或对象传递给模板,并为您提供访问两个数据结构成员的相同接口.所以,例如:

$test = array('foo' => 'foo', 'bar' => 'bar');
Run Code Online (Sandbox Code Playgroud)

会让你在模板访问此作为test.foo和test.bar

现在这个对象的实例将具有相同的效果.哪个非常棒:)

class test
{
    public $foo;
    public $bar;
}
Run Code Online (Sandbox Code Playgroud)

使用magic __set和__get方法的对象怎么样?

class test
{
    public $properties;

    public function __set($name, $value)
    {
        $this->properties[$name] = $value;
    }

    public function __get($name)
    {
        return $this->properties[$name];
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,在这种情况下,您无法访问此对象的属性.我不确定Twig是这里的问题还是PHP本身.

Phi*_*hil 14

你也需要实现__isset(),例如

public function __isset($name) {
    return array_key_exists($name, $this->properties);
}
Run Code Online (Sandbox Code Playgroud)

见http://twig.sensiolabs.org/doc/recipes.html#using-dynamic-object-properties