在过去的两个月里,我一直在开发一个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应用程序的适当方法,还是应该采用不同的方式?
答案 0 :(得分:1)
问题不是很详细,但我认为我认为你可以做的是以一种方式组织事物,即AdminBundle和UserBundle包含一组通用服务,允许你构建重用它们的控制器。
然后,您可以拥有一系列像ProductBundle这样的捆绑包,可以重用这些服务并与之交互。在控制器中使用依赖注入,而不是扩展Symfony的Controller类;这样,您可以利用服务继承并在AdminBundle和UserBundle中构建抽象控制器,并使用它们来派生您的特定控制器。
更一般地说,我喜欢以一种跨越应用程序域的每个问题的方式构建Symfony应用程序(例如,搜索引擎中的实体索引,日志记录,URL的生成等)我想创建一个提供一些抽象来处理它的包;对于域的每个区域(例如产品管理,用户管理等),我喜欢有一个捆绑,它实现抽象概念中提供的接口,并注册要在提供的抽象中使用的特定服务。在这种情况下,可以通过容器的配置和标记系统进行接口连接。
这个问题非常通用,所以我的答案也是如此,如果你想要更多详细信息,请随时提供更多详细信息。