11

Zendframework-1 では、プラグインを作成したり、コア ライブラリを拡張したりするために、通常、カスタマイズされたコードをライブラリ フォルダー (アプリケーション フォルダーと平行) の下に、zend フレームワーク (ベンダー) ライブラリとほぼ同じフォルダー構造を使用して保存します。

Zend Framework 2 では、フォルダー構造が変更されています。zend ベンダー コア ライブラリは Vendor フォルダーの下に移動され、アプリケーション フォルダーは Module (ルート) フォルダーに移動されます。

私の質問は、カスタマイズされたプラグイン/コード ベースのライブラリ フォルダーを ZF2 に保存するのに最適な場所はどこですか?

この段階を経た人はいますか?

4

2 に答える 2

5

ライブラリの目的によって異なります

多くのモジュールで使用されるケース 1 :
ベンダー フォルダーに配置し、PSR-0 に準拠していることを確認してください。これにより、オートロードが容易になります。

ケース 2、1つのモジュールのみで使用される場合: 以下
に配置し、 sメソッドをmodules/your_module/src編集して自動ロードします。Module.phpgetAutoloaderConfig()

....

class Module {

....

public function getAutoloaderConfig()
{
    return array(
        'Zend\Loader\ClassMapAutoloader' => array(
            __DIR__ . '/autoload_classmap.php',      // classmap for production usage
        ),
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, // your module's files autoloading (development usage and fallback)
                'library_namespace' => __DIR__ . '/src/librarys_namespace/potential_subfolder', // your library files autoloading (development usage and fallback). eg: 'acme' => '/src/acme/library' for acme namespace
            ),
        ),
    );
}

....

ケース 3、ライブラリがサード パーティ製モジュールの場合:
ベンダー フォルダ内に配置します。参照については、ZfcUserを参照してください。

あなたのユースケースはケース1が最も好きだと思います。あなたのライブラリは、たとえばZend\Mvc\Controller\AbstractActionController追加のプラグインの動作を変更します。 ただし、プラグインが 1 つのモジュールでのみ使用される場合は、ケース 2 で説明したようにモジュール コードと並列に配置する方が適切です。

于 2012-08-06T16:44:21.100 に答える
4

./vendorコードに一般的な目的がある場合 (つまり、StdClass、ArrayAccess、Iterator などのクラス)。つまり、モジュールが機能するためにこれらのクラスが必要な場合、それらはベンダー内にある必要があります。

./moduleプラグイン/コードが特定の目的 (およびスタンドアロン) を意図している場合、それがモジュールであるかどうかを評価できます (つまり、ZF-Commons サードパーティ モジュール/ZfcUser のようなプラグイン)。

于 2012-08-06T11:32:17.740 に答える