Я пытаюсь использовать Doctrine ORM в первый раз, и я следую конфигурации , найденной здесь .
Выполнение этих шагов напрямую приводит к следующей ошибке:
Предупреждение: class_parents () [function.class-parent]: Класс 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 \ Пользователь не существует» в / 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): Doctrine \ 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): Doctrine \ ORM \ Mapping \ ClassMetadataFactory-> loadMetadata('MyProject \ Model ...')
# 4 /opt/local/lib/php/Doctrine/ORM/EntityManager.php(247): Doctrine \ 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);