Я новичок в Doctrine, я следую примерам в документации. Когда я создаю класс репозитория (например, UserRepository.php), и я пытаюсь расширить класс EntityRepository, я получаю это сообщение об ошибке: Fatal error: Class 'Doctrine \ ORM \ EntityRepository' не найден в C: \ xampp \ htdocs \ excap \ repositories \ UserRepository.php в строке 10
Это мой класс репозитория:
use Doctrine\ORM\EntityRepository; /** * Description of UserRepository * * @author Mario */ class UserRepository extends EntityRepository {
Что я делаю не так? (кстати, я установил Doctrine2 с помощью Composer)
<?php //bootstrap_doctrine.php $isDevMode = true; use Doctrine\ORM\Tools\Setup; require_once 'vendor/autoload.php'; $config = Setup::createAnnotationMetadataConfiguration(array(__DIR__.'/entities'), $isDevMode); $conn = array( 'driver' => 'pdo_mysql', 'user' => 'mydbuser', 'password' => 'mydbpassword', 'dbname' => 'mydbname' ); $entityManager = \Doctrine\ORM\EntityManager::create($conn, $config); ?>
<?php //boostrap.php //Entities require_once 'entities/User.php'; require_once 'entities/Gender.php'; require_once 'entities/AccessPoint.php'; //Repositories require_once 'repositories/UserRepository.php'; if(!class_exists("Doctrine\Common\Version", FALSE)) { require_once 'bootstrap_doctrine.php'; } ?>
<?php // autoload.php generated by Composer if (!class_exists('Composer\\Autoload\\ClassLoader', false)) { require __DIR__ . '/composer' . '/ClassLoader.php'; } return call_user_func(function() { $loader = new \Composer\Autoload\ClassLoader(); $composerDir = __DIR__ . '/composer'; $map = require $composerDir . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { $loader->add($namespace, $path); } $classMap = require $composerDir . '/autoload_classmap.php'; if ($classMap) { $loader->addClassMap($classMap); } $loader->register(); return $loader; }); ?>
Задача решена. Проблема была в файле bootstrap.php. Я загружал объекты перед загрузкой bootstrap_doctrine.php; это все.
Вы помещали пространство имен в свой класс репозитория?