3

私が理解しているように、バンドルは機能を分離することです。UserBundle&があるとしBlogBundleます。次に、を参照BlogBundle:Postするauthorフィールドが作成されますUserBundle:User。それはバンドルの目的に反していませんか? 別のものを交換することはできUserBundleませんか?どうすれば適切な方法で行うことができますか?それとも、これが最善ですか?

4

3 に答える 3

6

バンドル間の依存関係が気に入らない場合 (個人的には同意します)、任意のバンドルの外部でモデルを作成できます。これは次のように構成できます…</p>

doctrine_mongodb:
    document_managers:
        default:
            mappings:
                model:
                    type: annotation
                    dir: %kernel.root_dir%/../src/MyApp/Model
                    prefix: MyApp\Model\
                    alias: Model

ORM の構成も同様です。

于 2011-12-26T16:56:08.617 に答える
3

バンドルは機能を可能な限り分離することを目的としていますが、それは一部が他の機能に依存しないという意味ではありません。

スタンドアローンのライブラリであるはずの Symfony2 のコンポーネントにも依存関係があるのは興味深いと思います。たとえば、クラスはおよびコンポーネントのHttpKernelクラスに依存します。HttpFoundationEventDispatcher

あなたの例では、別の をスワップする必要がある場合はUserBundle、必要な手順を実行して、BlogBundleの依存関係がまだ満たされていることを確認する必要があります。これは、リファクタリングが必要であることを意味する場合があります。

したがって、一方が他方を参照するため、バンドルの目的が無効になることはありません。バンドルは、常に 100% 切り離されているとは限らない場合でも、使用するのに有利です。

于 2011-12-26T15:14:06.323 に答える
0

別のアプリケーションのコンテキストでは、特定のブログ投稿をグループではなく個人/ユーザーにバインドしたくない場合があります。コードの移植性を最大限に保つには、シナリオを少し抽象化する必要があると思います。関係は受け入れられないでしょう。一方、所有者のアイデンティティはです。

特定のブログ投稿に所有者がいるとします。独自のバンドルを持つ別のアプリケーションのコンテキストでは、所有者 ID はグループ、ユーザー、外部ソースなどである可能性があります。

私見では、記事を書いた「人」のIDのみを使用する必要があり、これがローカルデータベースの「人」であることを意味する実装を制限する必要はありません。

于 2011-12-27T09:49:46.947 に答える