Doctrine ORM を初めて使用しようとしています。ここにある構成に従っています。
これらの手順を直接実行すると、次のエラーが発生します。
警告: class_parents() [function.class-parents]: クラス MyProject\Model\User が存在せず、 222 行目の/opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.phpにロードできませんでした
警告: array_reverse() は、パラメーター 1 が配列であると想定 します。222 行目の/opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.phpで指定されたブール値です。
警告: /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.phpの222 行目 の foreach() に無効な引数が指定されまし た
致命的なエラー: /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadata.php:67 にメッセージ「Class MyProject\Model\User does not exist」を含むキャッチされない例外「ReflectionException」
スタックトレース:
#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 /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);