Php Symfony2捆绑包:我使用对了吗?
我有一个应用程序是在Symfony2中开发的。现在它的结构如下:Php Symfony2捆绑包:我使用对了吗?,php,symfony,Php,Symfony,我有一个应用程序是在Symfony2中开发的。现在它的结构如下: FrontBundle-包括与应用程序视图和UI相关的所有内容 PersistanceBundle—包括与应用程序的持久性层相关的所有内容 DomainBundle—包括与应用程序实体和服务相关的所有内容 这个结构可以吗?或者像论坛功能一样使用捆绑包——ForumBundle——它包括与论坛相关的每一层(控制器、服务、域逻辑和持久性)。关于如何使用捆绑包构建应用程序,没有硬性规定,但以下是我在Symfony2上开发了近一年后得
- FrontBundle-包括与应用程序视图和UI相关的所有内容李>
- PersistanceBundle—包括与应用程序的持久性层相关的所有内容
- DomainBundle—包括与应用程序实体和服务相关的所有内容
这个结构可以吗?或者像论坛功能一样使用捆绑包——ForumBundle——它包括与论坛相关的每一层(控制器、服务、域逻辑和持久性)。关于如何使用捆绑包构建应用程序,没有硬性规定,但以下是我在Symfony2上开发了近一年后得出的结论 使用一个特定于应用程序的捆绑包。起初,我使用了多个捆绑包,如
CommonBundle
,UserBundle
,mainbndle
,BlogBundle
,ContactBundle
,但最终证明并不方便,因此我只使用了一个特定于应用程序的捆绑包-AppBundle
您可以使用子名称空间整齐地组织代码。例如,后端控制器将转到AppBundle\Controller\backend
子名称空间
请注意,我所说的是一个特定于应用程序的捆绑包,它是具体应用程序所特有的,在其他地方重用是没有意义的。您仍然可以为可重用的东西开发单独的捆绑包,并将它们放入供应商的基础架构中
不要将非Symfony特定的内容包含在捆绑包中。如果模型和类不是Symfony2特定的,则不需要将它们包含在捆绑包中。有关更多详细信息,请参阅和我的答案。为项目组织应用程序结构有不同的方法。但是,如果您想要分发捆绑包并遵循symfony最佳实践,那么捆绑包更多的是特性,而不是UI的分离。更多关于捆绑包的信息,请阅读 我有两个具有以下结构的项目,我认为它们都是有效的:
正如Elnur所说,使用一个AppBundle是一个很好的实践 单个bundle自己实现MVC模式,所以我认为使用bundle来分隔层不是一个好主意 我认为使用bundle的最佳方式是考虑“开源”。如果您正在开发的功能足够通用,可以为每个人发布,或者在将来的项目中重用,请将此功能放在一个捆绑包中。 这种方式将迫使您在不使用AppBundle中的任何业务规则的情况下构建该功能
捆绑包是砖块“将非Symfony特定的东西从捆绑包中取出。”那么,将它放在哪里呢?在
src/MyVendor/Model
中,甚至在vendor/MyVendor/Model
中,并将这些名称空间添加到自动加载器中。我自己也面临着同样的问题。我并没有穿过埃尔努尔所说的捆绑物。因此,我创建了自己的包(目前位于alptha),名为,也可通过。我试图遵循所有的最佳实践,如“目录树结构”和“编码标准”。希望有帮助,欢迎反馈。