別のウェブサイトで使用されている既存のsymfonyソフトウェアを再利用する新しいウェブサイトを構築しています。コードとデータの重複を避けるために、再利用可能なコンポーネントをプラグイン( "app-plugin")に移動しています。プラグインは、Webサイトのsvnリポジトリでsvn-externalとして構成されます。
既存のsymfonyインスタンスには、他のプラグイン(sfDoctrineGuardPluginなど)で最初に定義されたオーバーライドされたドクトリンクラス(モデル、フォーム、フォームフィルター)が含まれています。オーバーライドされたクラスは両方のsymfonyインスタンスで再利用できるため、それらを「app-plugin」に移動します。しかし、これは問題を引き起こします:
たとえば、誰かが実行した場合symfony doctrine:build-forms
、移動されたファイルはlib / form / doctrine内のタスクによって再作成され、空のクラス定義が含まれます。その理由は私には非常に明白です。symfonyは「app-plugin」がすでにそれらのフォームクラスを定義していることをどのように知っているのでしょうか?唯一の方法は、タスクを実行してクラスがすでに使用可能かどうかを確認する前に、すべてのクラスを自動ロードすることです。
回避策は、app-pluginのconfig/autoload.ymlでこれらのクラスを除外することです。しかし、もっと良い方法はありますか?
編集
通常のプラグイン(sfGuardなど)と共有コンポーネントを含むプラグインとの混同を避けるために、「app-plugin」という用語を使用しています。
前:
後: