doctrine 2 Annotations和Zend Framework强调约定

问题描述 投票:4回答:1

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

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

PHP致命错误:未捕获异常'Doctrine \ DBAL \ DBALException',并显示消息'请求未知列类型'。 in ... 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;
    }

}
zend-framework annotations doctrine naming-conventions dql
1个回答
3
投票

您必须在所有DQL查询前写_是。

变量前面的下划线是某种匈牙利符号,我们作为Doctrine团队不喜欢。就我所理解的情况而言,即使是Zend Framework也会放弃新代码的风格。许多其他项目都做了同样的事情,PEAR2甚至在这方面改变了标准。

© www.soinside.com 2019 - 2024. All rights reserved.