Драйвер Yaml для Doctrine 2 даже не пытается загружать классы - PullRequest
0 голосов
/ 08 апреля 2011

Я пытаюсь загрузить свои классы схемы из Yaml в Doctrine 2.0, и я наткнулся на стену.К сожалению, документация Doctrine 2.0 ужасна.Я думал, что документация Doctrine 1.2 была дерьмом ... 2.0 - это просто слова.Вот это да.В любом случае, вот что у меня есть:

require_once(\config\paths\CLASS_LOADER);
$loader = new \Doctrine\Common\ClassLoader('Doctrine', \config\paths\PHP_LIBRARIES);
$loader->register();
$cache = new \Doctrine\Common\Cache\ArrayCache();

$config = new \Doctrine\ORM\Configuration;
$config->setMetadataCacheImpl($cache);
$driver = new \Doctrine\ORM\Mapping\Driver\YamlDriver(\config\paths\MODELS);
$config->setMetadataDriverImpl($driver);
$config->setQueryCacheImpl($cache);
$config->setProxyDir(\config\paths\PROXIES);
$config->setProxyNamespace('lib\orm\proxies');

$config->setAutoGenerateProxyClasses(true);//@PRODUCTION - set this false

$connectionOptions = array(
    'driver' => \config\db\DRIVER,
    'user' => \config\db\LOGIN,
    'password' => \config\db\PASSWORD,
    'dbname' => \config\db\TABLE,
    'host' => \config\db\HOST
);
$em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config);

Все пути верны.Все константы, переданные в массив $ connectionOptions, являются правильными.Путь к моделям - это папка, заполненная файлами, такими как ClaimStatus.dcm.yml, которые содержат такое содержимое, как:

orm\ClaimStatus:
    type: entity
    table: claim_status
    id:
            id:
                    type: integer
                    generator:
                            strategy: identity
    fields:
            name:
                    type: string
            code:
                    type: string

Все же после того, как все сказано и сделано, и менеджер сущностей готов, я делаю:

$em->find('orm\\Category',1);

но все, что я получаю, это:

Warning: class_parents() [function.class-parents]: Class orm\Category does not exist and could not be loaded in /usr/share/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php on line 222
Fatal error: Uncaught exception 'ReflectionException' with message 'Class orm\Category does not exist' in /usr/share/php/Doctrine/ORM/Mapping/ClassMetadata.php on line 67

1 Ответ

2 голосов
/ 08 апреля 2011

Драйвер YAML принимает только путь к файлам YAML, а не к самим файлам классов PHP.

Вам потребуется настроить отдельный автозагрузчик, который может находить файлы классов PHP или включать их вручную.Вероятно, для этого вы можете использовать автозагрузчик Doctrine:

$loader = new \Doctrine\Common\ClassLoader('orm', 'path/to/orm/classes');
$loader->register();
...