Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2捆绑包:我使用对了吗?_Php_Symfony - Fatal编程技术网

Php Symfony2捆绑包:我使用对了吗?

Php Symfony2捆绑包:我使用对了吗?,php,symfony,Php,Symfony,我有一个应用程序是在Symfony2中开发的。现在它的结构如下: FrontBundle-包括与应用程序视图和UI相关的所有内容 PersistanceBundle—包括与应用程序的持久性层相关的所有内容 DomainBundle—包括与应用程序实体和服务相关的所有内容 这个结构可以吗?或者像论坛功能一样使用捆绑包——ForumBundle——它包括与论坛相关的每一层(控制器、服务、域逻辑和持久性)。关于如何使用捆绑包构建应用程序,没有硬性规定,但以下是我在Symfony2上开发了近一年后得

我有一个应用程序是在Symfony2中开发的。现在它的结构如下:

  • FrontBundle-包括与应用程序视图和UI相关的所有内容
  • PersistanceBundle—包括与应用程序的持久性层相关的所有内容
  • DomainBundle—包括与应用程序实体和服务相关的所有内容

这个结构可以吗?或者像论坛功能一样使用捆绑包——ForumBundle——它包括与论坛相关的每一层(控制器、服务、域逻辑和持久性)。

关于如何使用捆绑包构建应用程序,没有硬性规定,但以下是我在Symfony2上开发了近一年后得出的结论

使用一个特定于应用程序的捆绑包。起初,我使用了多个捆绑包,如
CommonBundle
UserBundle
mainbndle
BlogBundle
ContactBundle
,但最终证明并不方便,因此我只使用了一个特定于应用程序的捆绑包-
AppBundle

您可以使用子名称空间整齐地组织代码。例如,后端控制器将转到
AppBundle\Controller\backend
子名称空间

请注意,我所说的是一个特定于应用程序的捆绑包,它是具体应用程序所特有的,在其他地方重用是没有意义的。您仍然可以为可重用的东西开发单独的捆绑包,并将它们放入供应商的基础架构中


不要将非Symfony特定的内容包含在捆绑包中。如果模型和类不是Symfony2特定的,则不需要将它们包含在捆绑包中。有关更多详细信息,请参阅和我的答案。

为项目组织应用程序结构有不同的方法。但是,如果您想要分发捆绑包并遵循symfony最佳实践,那么捆绑包更多的是特性,而不是UI的分离。更多关于捆绑包的信息,请阅读

我有两个具有以下结构的项目,我认为它们都是有效的:

  • 为每个功能创建一个捆绑包:BlogBundle、StoreBundle等等, 以及包含常规内容的AppBundle。没有后端/前端 分离。在大多数情况下,后端是前端的SaaS
  • 一个包用于前端,一个包用于后端。它们只共享实体 和特定领域的东西。应用程序有两个不同的目的

  • 正如Elnur所说,使用一个AppBundle是一个很好的实践

    单个bundle自己实现MVC模式,所以我认为使用bundle来分隔层不是一个好主意

    我认为使用bundle的最佳方式是考虑“开源”。如果您正在开发的功能足够通用,可以为每个人发布,或者在将来的项目中重用,请将此功能放在一个捆绑包中。 这种方式将迫使您在不使用AppBundle中的任何业务规则的情况下构建该功能


    捆绑包是砖块

    “将非Symfony特定的东西从捆绑包中取出。”那么,将它放在哪里呢?在
    src/MyVendor/Model
    中,甚至在
    vendor/MyVendor/Model
    中,并将这些名称空间添加到自动加载器中。我自己也面临着同样的问题。我并没有穿过埃尔努尔所说的捆绑物。因此,我创建了自己的包(目前位于alptha),名为,也可通过。我试图遵循所有的最佳实践,如“目录树结构”和“编码标准”。希望有帮助,欢迎反馈。