2

我有一个有效的 ZF2(骨架)应用程序,并且想要集成 Doctrine。

我已经从 github 下载了 2 个模块(DoctrineModule 和 DoctrineORMModule),因为我无法使用 composer(所以请不要回答;“get composer”)。

经过数小时试图找到问题后,我不断收到以下错误:

致命错误:在第 54 行的教义/DoctrineModule/src/DoctrineModule/Module.php 中找不到类 'Doctrine\Common\Annotations\AnnotationRegistry'。

我花了数小时搜索和尝试调试,但我找不到修复它的方法。请帮我。

4

3 回答 3

5

DoctrineORMModule不明确支持没有作曲家的自动加载(因为它是一团糟)。

在当前 ( 0.7.*) 版本中DoctrineORMModule,所需的软件包如下:

您可以做的是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,否则你只会延迟未来的巨大问题。

这个解决方案现在应该可以工作。

于 2013-02-20T13:23:32.917 回答
0

表单注解需要Doctrine\Common,它包含一个注解解析引擎。安装 Doctrine\Common 的最简单方法是使用 Composer;只需更新您的 composer.json 并将以下行添加到 require 部分:

"doctrine/common": ">=2.1", 然后运行 ​​php composer.phar update 安装依赖。

如果您不使用 Composer,请访问 Doctrine 项目网站以获取有关安装的更多详细信息。

于 2013-11-12T12:47:41.227 回答
0

尝试在Application模块的Module.php中编辑如下方法:

public function getAutoloaderConfig()
{
    return array(
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                'Doctrine' => //Path where your doctrine dist resides
            ),
        ),
    );
}

无需为 and 定义自动加载配置DoctrineModuleDoctrineORMModule因为这是 ZF2 模块并且已经提供了自动加载配置。

于 2013-02-20T13:09:40.157 回答