据我了解,Bundles 是为了分离功能。假设我有一个UserBundle
& a BlogBundle
。然后我BlogBundle:Post
将有一个author
引用的字段UserBundle:User
。这不是违背了Bundles的目的吗?我不能换另一个UserBundle
吗?我怎样才能以正确的方式做到这一点?还是这是最好的?
问问题
994 次
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
类依赖于HttpFoundation
和EventDispatcher
组件中的类。
在您的示例中,如果您需要换入另一个UserBundle
,您必须采取必要的步骤来确保您BlogBundle
的依赖关系仍然得到满足。这可能意味着您需要重构。
因此,捆绑的目的并没有因为一个引用另一个而被破坏。即使捆绑并不总是 100% 解耦,使用捆绑仍然是有利的。
于 2011-12-26T15:14:06.323 回答
0
好吧,在另一个应用程序的上下文中,可能不想将给定的博客文章绑定到个人/用户,而不是组。为了使您的代码最大限度地可移植,我认为您应该稍微抽象一下场景。关系将是不可接受的。另一方面,所有者身份是。
所以想象一个给定的博客文章有一个所有者。在上下文中,如果不同的应用程序具有自己的包,所有者身份可能是组、用户、外部源等。
恕我直言,您应该只使用撰写文章的“人”的 id,而不是限制您的实现,暗示这将是本地数据库上的“人”。
于 2011-12-27T09:49:46.947 回答