Проблема с импортом аннотаций

Я работаю над проектом CodeIgniter, в котором я использую Doctrine2 и компонент Symfony2 Validator.

Все мои сущности Doctrine2use Doctrine\ORM\Mapping и менеджер по сущностям распознает их. Моя аннотация сущности выглядит так:

/**
 * @Entity(repositoryClass = "UserRepository")
 * @Table(name = "user")
 * @HasLifecycleCallbacks()
 */

На данный момент я могу сохранять сущности без каких-либо проблем. Первая проблема возникает, когда я пытаюсь использовать компонент Symfony2 Validator. Когда я пытаюсь подтвердитьUser объект, я получаю эту ошибку:

[Semantical Error] The annotation "@Entity" in class Entity\User was never imported. Did you maybe forget to add a "use" statement for this annotation?

Единственное «исправление» к этому вопросу до концаuse Doctrine\Mapping\Entity, но я должен сделать это дляevery аннотация, используемая моей сущностью (Таблица, Столбец, ManyToOne и т. д.). Я пытаюсь понять, почему мне нужноuse каждый класс аннотаций вместо того, чтобы они автоматически распознавались (не должныuse Doctrine\ORM\Mapping предоставить мне доступ ко всем классам в этом пространстве имен?).

Итак, я тогда попробовалuse Doctrine\ORM\Mapping as ORM и предварительно все мои аннотации сORM\, Пример:@ORM\Entity(), Валидатор Symfony2 перестает жаловаться, но теперь Doctrine2 жалуется, чтоClass Entity\User is not a valid entity or mapped super class. Я понятия не имею, почему этот метод работает для валидатора, но не для Doctrine2. Если я запускаю консольную командуdoctrine:orm:infoмойUser юридическое лицо не признается.

Поскольку это приложение CodeIgniter, я автоматически загружаю библиотеки Symfony2 и Doctrine2. Мой код автозагрузки выглядит следующим образом:

# Symfony2 ClassLoader component
require_once __DIR__ . '/application/libraries/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php';
$loader = new \Symfony\Component\ClassLoader\UniversalClassLoader();
$loader->register();
$loader->registerNamespace('Symfony', __DIR__ . '/application/libraries/symfony/src');
$loader->registerNamespace('Doctrine', __DIR__ . '/application/libraries/doctrine/lib');

# Doctrine2 
require_once __DIR__ . '/application/libraries/doctrine/lib/Doctrine/Common/Annotations/AnnotationRegistry.php';
use Doctrine\Common\Annotations\AnnotationRegistry;
AnnotationRegistry::registerLoader(function($class) use ($loader) {
    $loader->loadClass($class);
    $classExists = class_exists($class, false);
    return $classExists;
});
AnnotationRegistry::registerFile(__DIR__ . '/application/libraries/doctrine/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php');

Меня не волнует, нужно ли мне начинать все сORM\ или нет, я просто хочу найти решение, с которым будут работать и Symfony2 Validator, и Doctrine2. Есть идеи?

Ответы на вопрос(5)

Ваш ответ на вопрос