在我的实体中,我有一个带变量名下划线的字段,如下所示:
/**
* @ORM\Column(type="text", nullable=true)
*/
private $value_text;
并且,例如,get函数:
public function getValueText()
{
return $this->value_dec;
}
有了这个,symfony就抛出了一个异常:
Neither the property "value_text" nor one of the methods "value_text()", "getvalue_text()"/"isvalue_text()" or "__call()" exist and have public access in class "AppBundle\Entity\MyEntity".
所以我改变了函数名,添加了下划线,但是当我想添加一行时,symfony会抛出相同的错误,但另一方面 - 它忽略了下划线,并寻找像getValueText()这样的函数。
为什么会这样?我已经使两个函数做同样的事情,我的代码工作,但当然我认为有一个更好的方法来做到这一点,而不是加倍功能。
试着用这个:
public function getValue_dec() {
return $this->value_dec;
}
但惯例是使用驼峰情况,所以这更好:
/**
* @ORM\Column(type="text", nullable=true)
*/
private $valueDec;
public function getValueDec()
{
return $this->valueDec;
}
Symfony使用camelCase作为属性命名约定。
这是Naming Conventions的官方文档
阅读更多相关文章
[PropertyInfo] Implement Naming Strategy for Properties
Added support for non-camel-case variable code conventions #29