Symfony Twig未调用对象属性的getter方法

Symfony Twig未调用对象属性的getter方法,symfony,twig,Symfony,Twig,在细枝模板文件中 {{stat.numberofu持有人} 根据本文件 它应该调用stat.getNumberOfHolders()getter,但我发现了一个错误 Twig_Error_运行时:对象“Acme\DemoBundle\Entity\SecurityStat”的方法“number_holders”不存在这与错误消息所说的差不多,您的属性可以通过gettergetNumberOfHolders访问,因此属性访问路径应该是{stat.numberOfHolders} 您在twig中进

在细枝模板文件中

{{stat.numberofu持有人}

根据本文件

它应该调用stat.getNumberOfHolders()getter,但我发现了一个错误


Twig_Error_运行时:对象“Acme\DemoBundle\Entity\SecurityStat”的方法“number_holders”不存在

这与错误消息所说的差不多,您的属性可以通过getter
getNumberOfHolders
访问,因此属性访问路径应该是
{stat.numberOfHolders}


您在twig中进行的调用必须与类中的实际方法名称相匹配,twig没有神奇的方法知道您的私有属性
number\u of_holders
可以通过您的方法访问
getNumberOfHolders

这与错误消息所说的差不多,您的属性可以通过getter
getNumberOfHolders
访问,因此属性访问路径应该是
{{stat.numberOfHolders}}


您在twig中进行的调用必须与类中的实际方法名称匹配,twig没有神奇的方法知道您的私有属性
number\u of_holders
可以通过您的方法
getNumberOfHolders

访问,是的,有一种“神奇的方法”,它被称为屈折因子,教条就是这样使用的。事实上,我相信twig没有使用它是一件很遗憾的事。我理解你的论点,但不同意在这个特殊情况下-这个属性被定义为私有的,通过屈折法通过它的getter暴露它的价值,但仍然保留它的“原始”名称将混淆和混淆这里的真正问题,这是一个不一致的命名策略。我看不出它有多不一致。该房产是私有的,不允许直接访问和/或继承访问。用户尝试在细枝中使用属性,所以我不知道为什么它应该尝试使用属性getter,它的名称是标准的:get+camlized name。您的观点是“如果使用了拐点,那么您就不能区分对公共属性及其getter的直接访问”?如果是,我同意,但直接进入房产是一种不好的做法,所以…:这让我想到,在我看来,属性和方法的命名策略应该是相同的,因此在使用
下划线_命名时使用
小写
的方法是不一致的,不应该像在本场景中那样“鼓励”。然而,这只是我的意见,我给我的awnser提供了上面的上下文。另外,
屈折因子
将公开get方法,而不是我在awnser中提到的属性本身。是的,有一种“神奇的方式”,它被称为屈折因子,教条就是这样使用的。事实上,我相信twig没有使用它是一件很遗憾的事。我理解你的论点,但不同意在这个特殊情况下-这个属性被定义为私有的,通过屈折法通过它的getter暴露它的价值,但仍然保留它的“原始”名称将混淆和混淆这里的真正问题,这是一个不一致的命名策略。我看不出它有多不一致。该房产是私有的,不允许直接访问和/或继承访问。用户尝试在细枝中使用属性,所以我不知道为什么它应该尝试使用属性getter,它的名称是标准的:get+camlized name。您的观点是“如果使用了拐点,那么您就不能区分对公共属性及其getter的直接访问”?如果是,我同意,但直接进入房产是一种不好的做法,所以…:这让我想到,在我看来,属性和方法的命名策略应该是相同的,因此在使用
下划线_命名时使用
小写
的方法是不一致的,不应该像在本场景中那样“鼓励”。然而,这只是我的观点,我在上面为我的awnser提供了上下文。另外,
屈折因子
将公开get方法,而不是我在awnser中提到的属性本身。
I have this class,


class SecurityStat
{

    /**
     * @var integer
     */
    private $number_of_holders;

    /**
    * Set number_of_holders
    *
    * @param integer $numberOfHolders
    * @return SecurityStat
    */
    public function setNumberOfHolders($numberOfHolders)
    {
      $this->number_of_holders = $numberOfHolders;

      return $this;
    }

    /**
    * Get number_of_holders
    *
    * @return integer 
    */
    public function getNumberOfHolders()
    {
      return $this->number_of_holders;
    }

}


Acme\DemoBundle\Entity\SecurityStat:
  type: entity
  table: security_stats
  id:
    id:
      type: integer
      generator: { strategy: AUTO }
  fields:
    number_of_holders:
      type: integer
      length: 15
      nullable: true