Symfony2应用程序结构的最佳实践

时间:2012-11-02 12:36:19

标签: php symfony

在过去的两个月里,我一直在开发一个Symfony2 Web应用程序。现在我已经回过头来尝试解决它的一些问题,因为它有点失控,我想让它易于维护。

我的应用程序被组织成一系列这样的包:

src/AppName/HelpBundle
src/Appname/InterfaceBundle
src/AppName/ProductBundle
src/AppName/UserBundle

InterfaceBundle只包含几个主要布局的树枝模板,而其他每个包都只是扩展了它,例如:

{% extends 'AppNameInterfaceBundle::layout.html.twig' %}

对于控制器,每个控制器目录都有两个子目录:User和Admin,例如:

src/AppName/ProductBundle/Controller/Admin/ProductCategoryController.php
src/AppName/ProductBundle/Controller/User/ProductCategoryController.php

这是构建Symfony应用程序的适当方法,还是应该采用不同的方式?

1 个答案:

答案 0 :(得分:1)

问题不是很详细,但我认为我认为你可以做的是以一种方式组织事物,即AdminBundle和UserBundle包含一组通用服务,允许你构建重用它们的控制器。

然后,您可以拥有一系列像ProductBundle这样的捆绑包,可以重用这些服务并与之交互。在控制器中使用依赖注入,而不是扩展Symfony的Controller类;这样,您可以利用服务继承并在AdminBundle和UserBundle中构建抽象控制器,并使用它们来派生您的特定控制器。

更一般地说,我喜欢以一种跨越应用程序域的每个问题的方式构建Symfony应用程序(例如,搜索引擎中的实体索引,日志记录,URL的生成等)我想创建一个提供一些抽象来处理它的包;对于域的每个区域(例如产品管理,用户管理等),我喜欢有一个捆绑,它实现抽象概念中提供的接口,并注册要在提供的抽象中使用的特定服务。在这种情况下,可以通过容器的配置和标记系统进行接口连接。

这个问题非常通用,所以我的答案也是如此,如果你想要更多详细信息,请随时提供更多详细信息。