twig/Symfony2中强制和非强制查找之间的差异

twig/Symfony2中强制和非强制查找之间的差异,symfony,twig,Symfony,Twig,在Symfony2的入门之旅中,我遇到了以下问题: {# array('user' => array('name' => 'Fabien')) #} {{ user.name }} {# force array lookup #} {{ user['name'] }} {# array('user' => new User('Fabien')) #} {{ user.name }} {{ user.getName }} {# force method name l

在Symfony2的入门之旅中,我遇到了以下问题:

    {# array('user' => array('name' => 'Fabien')) #}
{{ user.name }}

{# force array lookup #}
{{ user['name'] }}

{# array('user' => new User('Fabien')) #}
{{ user.name }}
{{ user.getName }}

{# force method name lookup #}
{{ user.name() }}
{{ user.getName() }}

有人能解释一下区别吗?

在twig中,当你只使用
foo.bar
时,
foo
可能是一个数组(在这种情况下,twig需要一个键
bar
),或者一个对象,而它需要一个可访问的属性
bar
,一个方法
getBar()
,我想我忘记了什么。然而,关键是,twig试图解决访问本身的类型,您可以随意加入(除此之外,它显然必须是结构化数据的形式)。如果您使用特定的访问方法,则可以从细枝中猜出:当您调用
foo.bar()
时,这显然是一种方法。(必须说,我从来没有听说过“强制查找”:X)

在twig中,当你只使用
foo.bar
时,
foo
可能是一个数组(在这种情况下twig需要一个键
bar
),或者一个对象,而它需要一个可访问的属性
bar
,一个方法
getBar()
,我想我忘记了什么。然而,关键是,twig试图解决访问本身的类型,您可以随意加入(除此之外,它显然必须是结构化数据的形式)。如果您使用特定的访问方法,则可以从细枝中猜出:当您调用
foo.bar()
时,这显然是一种方法。(必须说,我从来没有听说过“强制查找”:X)

我是不是搞错了什么,或者你是说twig,而不是yaml?不明白,这和yaml有什么关系:XOops,sry,我当然是指树枝。我不知道我是怎么想到亚姆的。我是不是搞错了什么,或者你是不是说小树枝,而不是亚姆?不明白,这和yaml有什么关系:XOops,sry,我当然是指树枝。不知道我是怎么想到亚姆的。这很有道理,谢谢。我认为这背后还有更多的原因。:)不,在{user.address}中阅读
{{{user.name}}比在{{user.getAddress()}
中阅读
{user.getName()}}更容易,因为这更自然。这就是模板制作的目的:使易于浏览。。。是的,模板^^(数组对于结构化数据来说越来越不常见)啊哈。这很有道理,谢谢。我认为这背后还有更多的原因。:)不,在{user.address}
中阅读
{{{user.name}}比在{{user.getAddress()}
中阅读
{user.getName()}}更容易,因为这更自然。这就是模板制作的目的:使易于浏览。。。是的,模板^^(对于结构化数据,数组变得越来越不常见)