Доктрина 2 Аннотации и Zend Framework подчеркивают соглашение - PullRequest
4 голосов
/ 01 сентября 2010

Я работаю в изолированной программной среде doctrine 2 (Beta3) и пытаюсь применить соглашение о кодировании Zend Framework, заключающееся в том, чтобы ставить подчеркивание перед членами частного класса. Когда я запрашиваю Address, хотя его закрытые члены НЕ подчеркнуты, я получаю объект, как и ожидалось. Когда я добавляю подчеркивания, заново создаю и снова заполняю базу данных, а затем выполняю тот же запрос, я получаю следующие сообщения об ошибках:

Примечание PHP: Неопределенный индекс: id в ... Doctrine / ORM / Internal / Hydration / AbstractHydrator.php в строке 184

Неустранимая ошибка PHP: необработанное исключение «Doctrine \ DBAL \ DBALException» с сообщением «Запрошен неизвестный тип столбца». в ... Учение / 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;
    }

}

1 Ответ

3 голосов
/ 01 сентября 2010

Вы должны написать _ перед всеми вашими DQL-запросами. Да.

Символы подчеркивания перед переменными - это некая венгерская нотация, которая нам, как команде доктрины, не нравится.Насколько я понял, даже Zend Framework отбросит этот стиль для нового кода.Многие другие проекты сделали то же самое, и PEAR2 даже изменил свой стандарт в этом отношении.

...