【发布时间】:2011-05-30 18:18:00
【问题描述】:
我是第一次尝试使用 Doctrine ORM,我正在关注configuration found here。
执行这些步骤直接会导致以下错误:
警告: class_parents() [function.class-parents]: 类 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”和消息 'Class 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): 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 上线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);
【问题讨论】:
标签: php orm annotations doctrine-orm