我有一个正在运行的 ZF2(骨架)应用程序,并且想要集成 Doctrine。
我已经从 github 下载了 2 个模块(DoctrineModule 和 DoctrineORMModule),因为我无法使用 Composer(所以请不要回答“获取 Composer”)。
经过几个小时的尝试查找问题后,我不断收到以下错误:
fatal error :在第 54 行 Doctrine/DoctrineModule/src/DoctrineModule/Module.php 中找不到类“Doctrine\Common\Annotations\AnnotationRegistry”。
我花了几个小时的时间进行搜索并尝试调试,但找不到修复它的方法。请帮助我。
最佳答案
DoctrineORMModule
不明确支持没有 Composer 的自动加载(因为它很困惑)。
从 DoctrineORMModule
的当前 (0.7.*
) 版本开始,所需的包如下:
- doctrine/common (2.3.0)
- doctrine/dbal (2.3.2)
- symfony/console (v2.1.7)
- doctrine/orm (2.3.2)
- doctrine/doctrine-module (0.7.*)
- doctrine/doctrine-orm-module (0.7.0)
您可以做的就是定义 init_autoloader.php
中的所有自动加载命名空间在你的骨架应用程序中(解释困惑的情况)。要替换的代码是有关自动加载器工厂的部分:
Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'autoregister_zf' => true,
'namespaces' => array(
'Doctrine\Common' => __DIR__ . '/vendor/doctrine/common',
'Doctrine\DBAL' => __DIR__ . '/vendor/doctrine/dbal',
'Symfony\Console' => __DIR__ . '/vendor/symfony/console',
'DoctrineModule' => __DIR__ . '/vendor/doctrine/doctrine-module',
'DoctrineORMModule' => __DIR__ . '/vendor/doctrine/doctrine-orm-module',
),
),
));
您必须自己配置各种 git 子模块
从模块的 0.8.*
版本开始,由于最近 doctrine/common
的拆分方式,依赖关系将增加相当多,因此请考虑寻找解决方案开始使用 Composer ,否则你只会在未来拖延巨大的问题。
此解决方案目前应该有效。
关于php - ZF2+无 Composer 主义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14979381/