ZF1 + Doctrine 2 ODM:调用未定义的方法AnnotationReader :: setDefaultAnnotationNamespace

时间:2012-06-22 21:14:05

标签: doctrine doctrine-orm doctrine-odm

我正在尝试设置zf1 + doctrine mongo odm 1.0.0BETA4-DEV项目。我正在使用https://github.com/Bittarman/zf-d2-odm分支但是当我将doctrine版本从1.0.0BETA3更新为1.0.0BETA4-DEV时,我收到以下错误:

 SCREAM: Error suppression ignored for
 ( ! ) Fatal error: Call to undefined method Doctrine\Common\Annotations\AnnotationReader::setDefaultAnnotationNamespace() in C:\htdocs\zf-d2-odm\library\Lupi\Resource\Odm.php on line 34
 Call Stack
 #  Time    Memory  Function    Location
 1  0.0007  139368  {main}( )   ..\index.php:0
 2  0.0217  659008  Zend_Application->bootstrap( )  ..\index.php:25
 3  0.0217  659104  Zend_Application_Bootstrap_BootstrapAbstract->bootstrap( )  ..\Application.php:355
 4  0.0217  659120  Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap( ) ..\BootstrapAbstract.php:586
 5  0.0314  1127240 Zend_Application_Bootstrap_BootstrapAbstract->_executeResource( )   ..\BootstrapAbstract.php:626
 6  0.0314  1127368 Lupi_Resource_Odm->init( )  ..\BootstrapAbstract.php:683

2 个答案:

答案 0 :(得分:3)

我在最新的原始文档中找到了新的方法用法

 https://github.com/doctrine/mongodb-odm-documentation

首先,您应该调用AnnotationDriver :: registerAnnotationClasses(),它将注释类注册到公共注册表。

AnnotationDriver::registerAnnotationClasses();

然后正常配置所有路径并使用工厂方法为注释驱动程序设置元数据驱动程序AnnotationDriver :: create()

$config = new Configuration();
$config->setProxyDir('/path/to/generate/proxies');
$config->setProxyNamespace('Proxies');
$config->setHydratorDir('/path/to/generate/hydrators');
$config->setHydratorNamespace('Hydrators');
$config->setMetadataDriverImpl(AnnotationDriver::create('/path/to/document/classes'));

$dm = DocumentManager::create(new Connection(), $config);

答案 1 :(得分:1)

该方法不再存在。您需要使用更新的API调用修改Lupi_Resource_Odm::init()