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,我正在尝试将我的代码划分为不同的控制器,如Ajax控制器、用户控制器等。。。但是我真的不知道什么时候我应该使用一个新的创建一个新的 例如,我的DefaultController开始相当大,大约800行,我想知道控制器太长是否会影响网站的性能?更长的加载时间。。。 如果是这样,我应该在什么时候将控制器拆分成更小的控制器?我想说的是,您应该对操作相同数据实体或在明确定义的职责范围内操作的操作进行分组。例如,用户的UserController、博客文章的PostCont

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

例如,我的DefaultController开始相当大,大约800行,我想知道控制器太长是否会影响网站的性能?更长的加载时间。。。
如果是这样,我应该在什么时候将控制器拆分成更小的控制器?

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

Symfony正在缓存几乎所有的东西,所以我不认为大型控制器会对性能造成影响,但如果您有一个数千行长的控制器,我不确定它是否只做一件事


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

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

Symfony正在缓存几乎所有的东西,所以我不认为大型控制器会对性能造成影响,但如果您有一个数千行长的控制器,我不确定它是否只做一件事


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

我认为最好从每个相关模型的控制器开始,使用CRUD结构

当然这取决于你的需要,但是如果你有一个模型帖子,你可能需要一个带有CRUD路由和方法的PostController,比如:索引/帖子、新建、更新、创建、删除。。。 根据需要,您可以删除或添加与 从这个基本结构的职位

尝试检测与defaultController中特定模型相关的内容,并为其创建控制器


祝你好运。

我认为最好从每个相关模型的控制器开始,并使用CRUD结构

当然这取决于你的需要,但是如果你有一个模型帖子,你可能需要一个带有CRUD路由和方法的PostController,比如:索引/帖子、新建、更新、创建、删除。。。 根据需要,您可以删除或添加与 从这个基本结构的职位

尝试检测与defaultController中特定模型相关的内容,并为其创建控制器


祝你好运。

riska和Yoann所说的都是真的


此外,如果我确信它只包含一个方法,我不希望创建单独的控制器。在这种情况下,我只是将其放入DefaultController。

riska和@Yoann所说的都是正确的


此外,如果我确信它只包含一个方法,我不希望创建单独的控制器。在这种情况下,我只是将其放入DefaultController。

根据我的经验,控制器是UI层的一部分。如果您非常关心控制器的小型化,请允许我为您提供控制器必须执行的最佳方案:

1.Call the appropriate service
2.Return the response
这是每个控制器操作的两行代码,或者您甚至可以在一行中完成它

就像上面提到的那个人一样,控制器通常被他们操作的实体/服务的类型分开。例如,如果您有一个实体,比如说用户,那么下面的操作很可能在其中:createAction、editAction、removeAction、registerAction、activateAction、loginAction、logoutAction等等


如果您的控制器是瘦的或胖的,它对性能没有任何影响。代码将在类似的流程中执行,所有类都缓存在生产环境中。

根据我的经验,控制器是UI层的一部分。如果您非常关心控制器的小型化,请允许我为您提供控制器必须执行的最佳方案:

1.Call the appropriate service
2.Return the response
这是每个控制器操作的两行代码,或者您甚至可以在一行中完成它

就像上面提到的那个人一样,控制器通常被他们操作的实体/服务的类型分开。例如,如果你有一个实体,让我们说 用户,以下操作很可能在其中:createAction、editAction、removeAction、registerAction、activateAction、loginAction、logoutAction等等

如果您的控制器是瘦的或胖的,它对性能没有任何影响。代码将在类似的流程中执行,所有类都将缓存在生产环境中