Symfony2, EntityManager :: getRepository (Пространство имен \ To \ Some \ Class :: class ИЛИ ‘** Bundle: Entity’)

Документы Symfony2 говорят, что я должен использовать псевдоним 'ByBundle:myEntity' для пути объекта:

$em->getRepository('ByBundle:myEntity');

Но этот строковый литерал бесполезен — нет рефакторинга, нет быстрого и автоматического переименования класса сущностей в IDE.

я использую magic method ::class

$em->getRepository(\ByBundle\Entity\myEntity::class);

Вопрос: правильно ли я это делаю?

4

Решение

Фактически, основная команда Symfony2 использует метод :: class, например, для добавления типов полей формы, например так: $builder->add('name',TextType::class,array(...)) начиная с Symfony v2.8, я думаю, нет ничего плохого в том, как вы это делаете.

ОБНОВИТЬ:
Это позволяет вашей IDE генерировать исключение, если изменится пространство имен связанного класса сущностей, и вы сможете распознать это во время процесса разработки. Это определенно способ «лучше быть безопасным, чем сожалеть», как сопоставить сущность, вместо того, чтобы иметь полное квалифицированное пространство имен или даже псевдоним в виде строки.

4

Другие решения

Да. Использование ссылки на класс всегда лучше, чем ссылка на строку.

Использование строки обычно означает, что существует алгоритм, который преобразует строку в класс.

IDE дружественных также желательно.

1

По вопросам рекламы [email protected]