10

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

$test = array('foo' => 'foo', 'bar' => 'bar');

将让您在模板中访问它test.footest.bar

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

class test
{
    public $foo;
    public $bar;
}

使用魔术 __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 本身的问题。

4

1 回答 1

15

您还需要实施__isset(),例如

public function __isset($name) {
    return array_key_exists($name, $this->properties);
}

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

于 2013-01-08T05:35:35.773 回答