0

バックグラウンド

共通のエンジンを共有する一連の Web サイトを開発しています。StackExchange の Web サイトのネットワークに非常に似たもの。すべての webiste は、別の Git リポジトリにある別の Symfony2 インストールであり、別のリポジトリに配置されているエンジンへの依存関係があります。

 "requires": {
     ...
     "my-platform/core": "dev-master"
 }

私はまだ開発の初期段階にあるのでcomposer update、コア リポジトリで何かを変更するたびに使用する必要はありません。Composer にはこの問題を解決するための適切なツールがあるようですが、適切に動作したくありません。

私のディレクトリ構造:

Workspace
    MyPlatformCore
        src
            MyPlatform
                Core
                    SomeClass.php
        composer.json
    MyWebsiteAAA
        app
        src
        vendor
        web
        composer.json
    MyWebsiteBBB
        app
        src
        vendor
        web
        composer.json

composer.jsonすべてのMyWebsiteXXXリポジトリからセクションを自動ロードします。

"autoload": {
    "psr-0": {
        "MyPlatform": "../MyPlatformCore/src"
    }
},

問題

php composer.phar dumpautoload --optimizeそこから実行MyWebsiteXXXすると、オートローダーのファイルが間違ったパスで生成されます。ファイルvendor/composer/autoload_classmap.phpに含まれるもの:

'MyPlatform\\Core\\...' => $vendorDir . '/myplatform/core/src/MyPlatform/Core/...php',

次のものが含まれている必要があります。

'MyPlatform\\Core\\...' => $vendorDir . '/../MyPlatformCore/src/MyPlatform/Core/...php',

PSWorkspace\MyPlatformCoreは実際にはシンボリックリンクですが、問題になるはずですよね?

4

1 に答える 1

0

Composer は、現在の作業フェーズに適合しません。

コア クラスの PSR-0 オートローダが機能していれば、それらを他のコードで利用できるようになります。このオートローダを Composer オートローダに追加するとうまくいくはずですが、常に composer で更新するのではなく、シンボリック リンクを介してコアの「進行中のコード」を統合する方がよいと思います。

本当の利点は、いくつかのタグ付きバージョンの既存のコア コードベースと、互いに異なる定義済みバージョンを使用する複数の Web サイトを使用することです。追加する機能やバグを修正する必要がある場合にのみ、コアで作業します。日常の作業は、いずれかの Web サイトに適用されます。これには、必要に応じて、この Web サイトのコア ファイルを更新することが含まれる場合があります。

于 2013-05-22T23:12:05.963 に答える