Zend framework 原则2注释和Zend框架强调了公约
我正在研究doctrine 2(Beta3)沙盒,并尝试应用Zend框架编码约定,即在私有类成员中放置一个前导下划线。当我查询地址时,虽然它的私有成员没有下划线,但我按预期检索对象。当我添加下划线、重新生成并重新填充数据库,然后运行相同的查询时,我会收到以下错误消息: PHP注意:未定义的索引:id在。。。Doctrine/ORM/Internal/Hydration/AbstractHydrator.php,第184行 PHP致命错误:未捕获异常“条令\DBAL\DBALException”,消息为“请求的列类型未知”。在。。。Doctrine/DBAL/DBALException.php:81 DQL查询:Zend framework 原则2注释和Zend框架强调了公约,zend-framework,annotations,doctrine,naming-conventions,dql,Zend Framework,Annotations,Doctrine,Naming Conventions,Dql,我正在研究doctrine 2(Beta3)沙盒,并尝试应用Zend框架编码约定,即在私有类成员中放置一个前导下划线。当我查询地址时,虽然它的私有成员没有下划线,但我按预期检索对象。当我添加下划线、重新生成并重新填充数据库,然后运行相同的查询时,我会收到以下错误消息: PHP注意:未定义的索引:id在。。。Doctrine/ORM/Internal/Hydration/AbstractHydrator.php,第184行 PHP致命错误:未捕获异常“条令\DBAL\DBALException”,
$q = $em->createQuery('select u from Entities\Address u where u.id = ?1');
$q->setParameter(1, '1');
$address = $q->getSingleResult();
ZFed地址类:
<?php
namespace Entities;
/** @Entity @Table(name="addresses") */
class Address
{
/**
* @Id @Column(type="integer", length=11, name="id")
* @GeneratedValue(strategy="AUTO")
*/
private $_id;
/** @Column(type="string", length=255, name="street") */
private $_street;
public function getId()
{
return $this->_id;
}
public function getStreet()
{
return $this->_street;
}
public function setStreet($street)
{
$this->_street = $street;
}
}
您必须在所有DQL查询前编写“是”
变量前面的下划线是某种匈牙利符号,我们作为条令团队不喜欢这种符号。据我所知,即使是Zend框架也会在新代码中放弃这种风格。许多其他项目也做了同样的事情,PEAR2甚至在这方面改变了他们的标准。Ah我看到“从实体中选择u\Address u其中u.\u id=?1”起作用-请注意\u id。这就是它的工作方式吗?轮询:是否应该删除非公共元素的下划线前缀?投票结果:PS:相信贝伯雷,他是Doctrine2核心开发人员;)啊,很高兴知道-再见强调。请允许我指出我的下一个问题:我想知道的是,大多数条令的代码都是以下划线作为类属性的前缀编写的。我对私有/受保护的类属性也使用下划线,是否有可能在实体中支持带下划线的类属性?