有人可以解释如何在Symfony2中创建存储无关的捆绑包吗?在互联网上没有关于它的文档,这个食谱:http://symfony.com/doc/current/cookbook/doctrine/mapping_model_classes.html是不够的!
答案 0 :(得分:0)
查看现有的捆绑包。 FOSUserBundle就是一个很好的例子。
基本上,您创建了一个通用的Model类,您的特定于存储的实体或文档(或其他)可以扩展。您的Mappers和/或存储库也是如此(如果有的话)。
避免重复自己并拥有可重用基础的好方法是使用Doctrine\Common
,这是不可知的,并且出于显而易见的原因,您的基类与Doctrine ORM和ODM兼容。
编辑以澄清:
上面的cookbook-entry只管理您实际使用的Mappers,Repositories,Entities等,具体取决于您的配置,即您选择的持久性(ORM,ODM,PHPCR)。通过这种方式,您总是公开(如果其他捆绑包依赖它可能很重要),例如UserManager,fos_user.user_manager
,无论它实际上是您正在使用的ORMUserManager,ODMUserManager还是PHPCRUserManager。此外,您还可以提供存储特定帮助程序,例如:每个不同配置的某些EventListener。