如何正确自动加载Doctrine ODM注释?

Mik*_*raf 2 php zend-framework mongodb doctrine-odm

试图运行命令行工具w/odm:schema:create我收到的错误如下:

"[Semantical Error] The annotation "@Document" in class Company_Model_Auth was never imported. Did you maybe forget to add a "use" statement for this annotation?" and
"[Semantical Error] The annotation "@EmbeddedDocument" in class Company_Model_Auth was never imported. Did you maybe forget to add a "use" statement for this annotation?"
Run Code Online (Sandbox Code Playgroud)

以及其他,基本上每个注释.

当我添加"use\Doctrine\ODM\MongoDB\Mapping\Annotations\EmbeddedDocument;"时 (或\ Document)到它工作的文件并前进到下一个Model.然后它将在下一个文件中抱怨缺少相同的类(Document/EmbeddedDocument和任何其他注释).我是否需要将use语句添加到每个文件中?

这是我如何构建我的DocumentManager ::

public function _initDm() 
{
        AnnotationDriver::registerAnnotationClasses();
        $config = new Configuration();
        $config->setProxyDir(APPLICATION_PATH . '/../data/Proxies');
        $config->setProxyNamespace('Proxies');
        $config->setHydratorDir(APPLICATION_PATH . '/../data/Hydrators');
        $config->setHydratorNamespace('Hydrators');
        $config->setMetadataDriverImpl(AnnotationDriver::create(APPLICATION_PATH . '/models'));     

        // Pull in mongo db connection options from application.ini
        $options = $this->getOption('mongo');
        $config->setDefaultDB($options['database']);

        // Create a DocumentManager and store in ZendRegistry
        $dm = DocumentManager::create(new Connection($this->_createMongoDbConnectionString($options)), $config);
        Zend_Registry::set('dm', $dm); 
}
Run Code Online (Sandbox Code Playgroud)

我仔细检查了./repos/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/DoctrineAnnotations.php文件肯定被命中,并且require_once是正确的注释文件.

作曲家提供的版本:

"doctrine/common": "2.3.0-RC3",
"doctrine/mongodb": "1.0.1",
"doctrine/mongodb-odm": "1.0.0-BETA7",
"symfony/console": "2.1.*@dev",
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,因为我不认为我应该为每个文件添加使用语句.

jmi*_*ola 10

注释解析器确实要求在使用之前导入注释类.代替显式导入每个注释类,您可以执行以下操作(从测试套件中取出):

<?php

namespace Documents;

use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;

/**
* @ODM\Document
*/
class User
{
    /** @ODM\Id */
    protected $id;

    /** @ODM\Field(type="string") */
    protected $username;

    // Other fields follow...
}
Run Code Online (Sandbox Code Playgroud)