10

Twig を使用すると、配列またはオブジェクトをテンプレートに渡すことができ、両方のデータ構造のメンバーにアクセスするための同じインターフェイスが提供されます。たとえば、次のようになります。

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

test.fooおよびとしてテンプレートでこれにアクセスできるようにしますtest.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 に答える