在Symfony 2中集成捆绑包(相关条令2实体)和耦合

在Symfony 2中集成捆绑包(相关条令2实体)和耦合,symfony,doctrine-orm,coupling,Symfony,Doctrine Orm,Coupling,据我所知,bundle是为了分离功能。假设我有一个UserBundle&一个BlogBundle。然后我的BlogBundle:Post将有一个引用UserBundle:User的author字段。这不是违背了捆绑的目的吗?我无法在中交换另一个UserBundle?我怎样才能用正确的方法来做呢?或者这是最好的选择?捆绑包旨在尽可能多地分离功能,但这并不意味着某些功能不依赖于其他功能 我认为有趣的是,即使是一些Symfony2组件(本应为独立库)也具有依赖性。例如,HttpKernel类依赖于Ht

据我所知,bundle是为了分离功能。假设我有一个
UserBundle
&一个
BlogBundle
。然后我的
BlogBundle:Post
将有一个引用
UserBundle:User
author
字段。这不是违背了捆绑的目的吗?我无法在中交换另一个
UserBundle
?我怎样才能用正确的方法来做呢?或者这是最好的选择?

捆绑包旨在尽可能多地分离功能,但这并不意味着某些功能不依赖于其他功能

我认为有趣的是,即使是一些Symfony2组件(本应为独立库)也具有依赖性。例如,
HttpKernel
类依赖于
HttpFoundation
EventDispatcher
组件中的类

在您的示例中,如果需要交换另一个
UserBundle
,则必须采取必要的步骤以确保仍然满足
BlogBundle
的依赖关系。这可能意味着您需要重构


因此,bundle的用途并没有因为一个引用另一个而失败。捆绑包仍然有利于使用,即使它们并非总是100%解耦。

如果您对捆绑包之间的依赖关系感到不舒服(我个人同意您的看法),您可以在任何捆绑包之外创建您的模型。这可以像这样配置

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

ORM的配置看起来类似

在另一个应用程序的上下文中,可能不希望将给定的博客文章绑定到个人/用户,而不是组。为了最大限度地保持代码的可移植性,我认为应该对场景进行一点抽象。这种关系是不可接受的。另一方面,所有者身份则是

因此,假设一篇博客文章有一个所有者。在上下文中,如果不同的应用程序具有自己的捆绑包,则所有者标识可能是组、用户、外部源等


我想你应该只使用写这篇文章的“一个人”的id,而不是绑定你的实现,这意味着这将是本地数据库上的一个“人”。

我感到恼火的是:如果我让社区可以使用一个捆绑包,并且它具有依赖性,那么下游开发人员必须整理这些DEP的安装。我想要一个deps系统,其中我为我的捆绑包指定了deps,并且
bin/vendors install
在下游开发人员不得不摸索第三方捆绑包的情况下处理它。这和缺乏内置管理生成器是我与s2(作为一名资深s1用户)争论的主要问题@yitznewton正在开发以解决这个问题。@elnur我们什么时候会用完音乐项目名称?TY:)我从未使用过这种方法,我很好奇你会如何引用存储库,因为你通常会编写
SomeBundle:SomeEntity
。前缀会代替bundle吗?例如
MyApp:Model
(基于您的示例配置)?但是假设我正在开发一个
UserBundle
,我可以将它用于多个项目,我不需要单独分发模型吗?而且这似乎只是另一个捆绑包,只是不是“正式的”one@Arms:您将使用配置的别名(即
model:User
)引用模型@JMatWork:在这种情况下,您将希望将模型放入捆绑包中