cycle / annotated

Schema generation using annotated entities and mappers
MIT License
24 stars 13 forks source link

No class alias support for annotation #1

Closed genhoi closed 5 years ago

genhoi commented 5 years ago

Если использовать псевдоним названия класса, а не название аннотации, то парсер не найдёт аннотацию, на сколько я понял такое поведение из-за особенностей реализации библиотеки https://github.com/spiral/annotations. В отличии от аннотаций доктрины, где название аннотации == название класса и есть поддержка псевдонимов. Т.е. такой вариант использования аннотаций не сработает

namespace App\Entity;

use Cycle\Annotated\Annotation\Entity as CycleEntity;

/**
 * @CycleEntity
 */
class Order
{

Стоит ли внедрять поддержку псевдонимов или есть причины именно такой реализации, где аннотация !== название класса?

wolfy-j commented 5 years ago

Привет, изначально аннотации писались чтобы соответствовать phpDoc, а не Doctrine Annotations. Позже, нас попросили сделать поддержку UpperCase и в итоге получается почти тоже самое.

Парсеры аннотаций работают в жестком скоупе - использование use не предполагалось, мы не считаем аннотации конструкцией языка, тем более требующей "пустого" use.

Однако, построение схемы и аннотации разнесены в 2 разных пакета, это сделано специально для возможности использовать другие методы декларации схемы. Если есть серьезное требование использовать алиасы то можно написать пакет используя Doctrine Annotation, мы не против.

wolfy-j commented 5 years ago

We are checking now how to migrate to Doctrine annotations since, apparently, it creates some internal conflicts with JMS serializer.

genhoi commented 5 years ago

Спасибо за ответ. Стоит ли рассматривать вариант реализации пакета генерации схемы на основе Doctrine Annotation или все таки подождать новостей о миграции на Doctrine annotations с вашей стороны?

wolfy-j commented 5 years ago

Привет, миграция уже в процессе. :)

wolfy-j commented 5 years ago

Done in 2.0