3

据我了解,Bundles 是为了分离功能。假设我有一个UserBundle& a BlogBundle。然后我BlogBundle:Post将有一个author引用的字段UserBundle:User。这不是违背了Bundles的目的吗?我不能换另一个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,而不是限制您的实现,暗示这将是本地数据库上的“人”。

于 2011-12-27T09:49:46.947 回答