Symfony2 我什么时候应该创建一个新的控制器


Symfony2 when should I create a new controller?

我目前正在使用Symfony2,并且我正在尝试将我的代码划分为不同的控制器(如Ajax控制器,用户控制器等),但我真的不知道什么时候应该使用创建一个新的控制器。

例如,我的 DefaultController 开始变得很大(~800 行),我想知道控制器太长是否会影响网站的性能?(更长的加载时间...而且,如果是这样,我什么时候应该将控制器拆分为较小的控制器?

我想说的是,您应该对操作进行分组,这些操作对相同的数据(实体)进行操作或在明确定义的职责范围内操作。 例如,用户控制器用于用户,PostController用于博客文章等。这意味着,如果要创建角色与其他操作不同的操作,请将其放在单独的控制器中。

Symfony缓存了几乎所有的东西,所以我不认为巨大的控制器会对性能产生影响,但是如果你有一个数千行长的控制器,我不确定它只做一件事。

控制器的大小也可能是放错位置的查询和业务逻辑的警告标志。您应该将 QueryBuilder 调用分离到存储库类中,并将其他逻辑分离到服务和事件处理程序中。您可以使用注释而不是 PHP 代码来保存更多行。

我认为从

每个相关模型的控制器开始是一个好主意,具有 CRUD 结构。

当然,这取决于您的需求,但是如果您有模型"Post",则可能需要一个带有CRUD路由和方法的PostController,例如:索引(/posts),new,update,create,delete...根据您的需要,您可以删除或添加一些相对于从此基础结构发布。

尝试检测相对于默认控制器中的特定模型的真实情况,并为其创建一个控制器。

祝你好运。

@riska和@Yoann所说的一切都是正确的。

此外,如果我确定它只包含一种方法,我宁愿创建单独的控制器。在这种情况下,我只是把它放到DefaultController.

根据我的经验,控制器是UI层的一部分。如果您非常关心保持控制器较小,那么让我为您提供控制器必须执行的最佳方案:

1.Call the appropriate service
2.Return the response

每个控制器操作需要 2 行代码,或者您甚至可以在一行中完成。

就像上面的人说的那样,控制者通常由他们操作的实体/服务类型分开。例如,如果您有一个实体 - 假设用户,则最有可能包含以下操作:创建操作,编辑操作,删除操作,注册操作,激活操作,登录操作,注销操作等...

如果您的控制器很薄或很胖,它不会对性能产生任何影响。代码将在类似的流中执行,并且所有类都缓存在生产环境中。