Zend framework 原则2注释和Zend框架强调了公约

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”,

我正在研究doctrine 2(Beta3)沙盒,并尝试应用Zend框架编码约定,即在私有类成员中放置一个前导下划线。当我查询地址时,虽然它的私有成员没有下划线,但我按预期检索对象。当我添加下划线、重新生成并重新填充数据库,然后运行相同的查询时,我会收到以下错误消息:

PHP注意:未定义的索引:id在。。。Doctrine/ORM/Internal/Hydration/AbstractHydrator.php,第184行

PHP致命错误:未捕获异常“条令\DBAL\DBALException”,消息为“请求的列类型未知”。在。。。Doctrine/DBAL/DBALException.php:81

DQL查询:

$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核心开发人员;)啊,很高兴知道-再见强调。请允许我指出我的下一个问题:我想知道的是,大多数条令的代码都是以下划线作为类属性的前缀编写的。我对私有/受保护的类属性也使用下划线,是否有可能在实体中支持带下划线的类属性?