ZF2 +学说不作曲家(ZF2 + doctrine without composer)

2019-07-20 05:06发布

我有一个工作ZF2(骨架)应用程序,并希望整合原则。

我已经下载了2个模块从GitHub(DoctrineModule和DoctrineORMModule)因为我无法使用作曲家(所以请不要回答;“获得作曲”)。

后试图找到我不断收到以下错误的问题时间:

致命错误:类 '原则\ COMMON \批注\ AnnotationRegistry' 不是教条/ DoctrineModule / src目录/ DoctrineModule / Module.php发现54行。

我有花搜索和尝试调试的时间,但我无法找到一个方法来解决它。 请帮我。

Answer 1:

DoctrineORMModule没有明确支持自动加载无需作曲家(因为它是一个烂摊子)。

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

  • 教义/普通 (2.3.0)
  • 教义/ DBAL (2.3.2)
  • 的symfony /控制台 (v2.1.7)
  • 教义/ ORM (2.3.2)
  • 教义/学说模块 (0.7 *)
  • 学说/教义-ORM模块 (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最近分裂,所以考虑找一个解决方案开始使用作曲家或者你只是在将来会延迟巨大的问题。

这个解决方案应该适用于现在。



Answer 2:

尝试在应用程序模块的Module.php编辑下面的方法:

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

没有必要定义自动加载配置DoctrineModuleDoctrineORMModule因为这是ZF2模块,并且已经提供了自动加载配置。



Answer 3:

表注释需要学说\ COMMON,其中包含注释parsering引擎。 安装主义\通用最简单的方法是,如果你使用的作曲家; 只需更新您的composer.json和下面的行添加到需要部分:

“教义/共同”:“> = 2.1”,然后运行php composer.phar更新安装的依赖性。

如果您使用的不是作曲家,请访问主义项目网站,了解有关安装的详细说明。



文章来源: ZF2 + doctrine without composer