0

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

我的应用程序被构造成一系列这样的包:

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

InterfaceBundle 只包含几个用于主布局的 twig 模板,而其他每个 bundle 都只是对其进行了扩展,例如:

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

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

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

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

4

1 回答 1

1

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

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

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

这个问题很笼统,所以我的回答也是如此,如果您想了解更多详细信息,请随时为您的问题提供更多详细信息。

于 2012-11-02T14:25:15.427 回答