据我所知,Bundles将分离功能。假设我有一个UserBundle
& a BlogBundle
。然后我的BlogBundle:Post
将有一个author
字段,其中引用UserBundle:User
。这不会破坏Bundles的目的吗?我不能换另一个UserBundle
?我怎样才能以正确的方式做到这一点?或者这是最好的呢?在Symfony 2和Coupling中集成Bundle(相关原则2实体)
回答
如果您对捆绑之间的依赖关系感到不舒服(我个人同意您的看法),您可以在任何捆绑之外创建模型。这可以像这样配置...
doctrine_mongodb:
document_managers:
default:
mappings:
model:
type: annotation
dir: %kernel.root_dir%/../src/MyApp/Model
prefix: MyApp\Model\
alias: Model
ORM的配置看起来很相似。
我从来没有使用过这种方法,我很好奇你将如何引用一个仓库,因为你通常会写'SomeBundle:SomeEntity'。前缀代替捆绑吗?例如'MyApp:Model'(根据您的示例配置)? – 2011-12-26 19:18:06
但是,假设我正在开发一个'UserBundle',我可以将它用于多个项目,我不需要单独分发模型吗?此外,它似乎是这样,只是另一个捆绑,而不是“正式”一个 – 2011-12-27 02:44:36
@Arms:您将使用配置的别名引用模型(即'型号:用户') – 2011-12-27 23:27:12
捆绑是为了尽可能地分开功能,但这并不意味着有些不会依赖于其他。
我认为有趣的是,甚至一些Symfony2组件,它们应该是独立的库,都有依赖关系。例如,HttpKernel
类取决于来自HttpFoundation
和EventDispatcher
组件的类。
在您的示例中,如果您需要在另一个UserBundle
中进行交换,则必须采取必要步骤以确保您的BlogBundle
的依赖关系仍然满足。这可能意味着你需要重构。
因此,捆绑的目的不会被打败,因为一个引用另一个。即使它们不总是100%解耦,捆绑仍然有利于使用。
那么,在另一个应用程序的上下文中,人们可能不希望将给定的博客帖子绑定到个人/用户,而不是群组。为了保持代码的最大可移植性,我认为你应该抽象一下这个场景。关系将是不可接受的。另一方面,所有者的身份是。
所以想象一个给定的博客文章有一个所有者。在上下文中,如果一个不同的应用程序有自己的捆绑包,所有者标识可能是一个组,一个用户,一个外部来源等。
Imho您应该只使用编写文章的“one”并不意味着这将成为本地数据库上的“人员”。
- 1. Symfony的2:理论和相关实体
- 2. Symfony 2验证与相关实体
- 3. 生成原则2实体时出错
- 4. zend框架2 +原则:移除与相关实体的媒体
- 5. 的Symfony /原则关系COUNT在实体
- 6. 2个实体的Symfony 2
- 7. 原则2:选择实体领域,包括相关领域
- 8. 原则2:页,块,战略模式与相关实体
- 9. Symfony 2将验证移至实体,与相关实体验证
- 10. 在Symfony 2上创建关系实体
- 11. blackhole cakephp 2相关实体
- 12. 来自实体对象symfony 2的调用原则
- 13. symfony 2 - Facebook Bundle - FacebookProvider - 如何在FacebookProvider中使用服务和实体管理器?
- 14. Symfony 2实体间关系组合
- 15. 实体与主义的关系(symfony 2)
- 16. Symfony 2上的学说实体关系
- 17. 在symfony 2中注入bundle服务
- 18. Symfony 2隐藏的实体?
- 19. 恢复值选择输入相关的实体doctrine symfony 2
- 20. Symfony 2生成:bundle - 带或不带命名空间/ Bundle/
- 21. Symfony 2&Doctrine 2:复杂的关系beetwen实体
- 22. Symfony的2 - 基于实体的关联动态表单生成
- 23. 缓存linq 2 sql实体和相关实体
- 24. 原则2:实体没有字段或关联名为x
- 25. 创建实体之间的关联原则2
- 26. 原则2:保存实体的复杂关系
- 27. 在Symfony 2中创建2个具有相同表单的实体
- 28. Symfony 2 +原则,加入多个表
- 29. Symfony 2:清理原则元数据
- 30. Symfony更新相关实体
我发现令人讨厌的事情是:如果我向社区提供一个包,并且它有依赖关系,那么下游开发人员必须对这些代码进行安装。我想要一个deps系统,我为我的捆绑指定了deps,'bin/vendors install'负责它,而不需要下游开发者与第三方捆绑。这和缺乏内置管理生成器是我与s2竞争的主要观点(作为一名资深s1用户) – yitznewton 2011-12-26 16:13:53
@yitznewton,[作曲家](https://github.com/composer/composer)正在开发中以解决这个问题。 – 2011-12-26 16:18:55
@elnur我们什么时候会用完音乐项目名称? TY :) – yitznewton 2011-12-26 17:17:47