Доктрина не работает, если я явно не вызываю AnnotationDriver :: getAllClassNames

Я впервые пытаюсь использовать Doctrine ORM, и я использую конфигурацию , найденную здесь .

Выполнение этих шагов напрямую приводит к следующей ошибке:

Предупреждение: class_parents () [function.class-parent]: Class getAllClassNames Я впервые пытаюсь использовать Doctrine ORM и следую приведенной здесь конфигурации. Выполнение этих шагов напрямую приводит к следующей ошибке: Предупреждение: class_parents () [...

Я пытаюсь использовать Doctrine ORM в первый раз, и я следую конфигурации , найденной здесь .

Выполнение этих шагов напрямую приводит к следующей ошибке:

Предупреждение: class_parents () [function.class-parent]: Class getAllClassNames Я впервые пытаюсь использовать Doctrine ORM и следую конфигурации, найденной здесь. Выполнение этих шагов напрямую приводит к следующей ошибке: Предупреждение: class_parents () [...

Я пытаюсь использовать Doctrine ORM в первый раз, и я следую конфигурации , найденной здесь .

Выполнение этих шагов напрямую приводит к следующей ошибке:

Предупреждение: class_parents () [function.class-parent]: Class MyProject \ Model \ User не существует и не может быть загружен в /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php в строке 222

Предупреждение: array_reverse () ожидает, что параметр 1 будет массивом с заданным логическим значением в /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php в строке 222

Предупреждение: Недопустимый аргумент для foreach () в /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php в строке 222

Неустранимая ошибка: Неперехваченное исключение «ReflectionException» с сообщением 'Класс MyProject \ Model \ User не существовать в /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadata.php:67

Трассировка стека:

# 0 /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadata.php ( 67): ReflectionClass -> __ construct ('MyProject \ Model ...')

# 1 /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php(350): Доктрина \ ORM \ Mapping \ ClassMetadata -> __ construct ('MyProject \ Model ...')

# 2 /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php(260): Doctrine \ ORM \ Mapping \ ClassMetadataFactory-> newClassMetadataInstance ('MyProject \ Model ...')

# 3 /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php(169): Доктрина \ ORM \ Mapping \ ClassMetadataFactory-> loadMetadata ('MyProject \ Model ...')

# 4 /opt/local/lib/php/Doctrine/ORM/EntityManager.php(247): Доктрина \ ORM \ Mapping \ ClassMetadataFactory-> getMetadataFor ('MyProject \ Model ...')

# 5 /opt/local/lib/php/Doctrine/ORM/EntityManager.php(563): Doctrine \ ORM \ EntityManager-> getClassMetadata ('MyProject \ Model ...')

# 6 / opt in /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadata.php on line 67

Эта ошибка исчезает, и код работает отлично, если в примере кода я добавляю следующую строку (обозначенную комментарием ниже):

$driverImpl = $config->newDefaultAnnotationDriver('/path/to/lib/MyProject/Entities');
$driverImpl->getAllClassNames();  // **MY ADDED LINE**
$config->setMetadataDriverImpl($driverImpl);

Нет ничего, что упоминало бы, что этот вызов требуется заставить пример кода работать; я случайно наткнулся на это, выводя некоторую информацию на экран, пытаясь увидеть, где происходит моя ошибка.

Есть ли причина, по которой этот вызов необходим (и почему он не упомянут в примере кода)? Есть ли что-то еще, что должно быть вызвано вместо этого, что является основной причиной моей исходной ошибки?

(Я могу опубликовать больше кода по мере необходимости, я просто не уверен, что наиболее полезно в решении этой проблемы, поскольку это мой первый раз с использованием Doctrine.)

РЕДАКТИРОВАТЬ: Я не упомянул строку, в которой на самом деле возникает ошибка:

$user = $em->find('MyProject\Model\User', 1);

6
задан Benjamin 1 September 2012 в 10:29
поделиться