2

動作中の ZF2 (スケルトン) アプリケーションがあり、Doctrine を統合したいと考えています。

composer を使用できないため、github から 2 つのモジュール (DoctrineModule と DoctrineORMModule) をダウンロードしました (「get composer」と答えないでください)。

何時間も問題を見つけようとした後、次のエラーが発生し続けます。

致命的なエラー: クラス 'Doctrine\Common\Annotations\AnnotationRegistry' が doctrine/DoctrineModule/src/DoctrineModule/Module.php の 54 行目に見つかりません。

検索とデバッグに何時間も費やしましたが、修正する方法が見つかりません。私を助けてください。

4

3 に答える 3

5

DoctrineORMModulecomposer なしでのオートロードを明示的にサポートしていません (混乱しているため)。

の現在の ( 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/commoncomposer の使用を開始するための解決策を見つけることを検討してください。そうしないと、将来の大きな問題を遅らせることになります。

このソリューションは今のところ機能するはずです。

于 2013-02-20T13:23:32.917 に答える
0

アプリケーションモジュールのModule.phpで次のメソッドを編集してみてください。

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

これはZF2モジュールであり、すでに自動ロード構成を提供しているためDoctrineModule、自動ロード構成を定義する必要はありません。DoctrineORMModule

于 2013-02-20T13:09:40.157 に答える