在Laravel中,单动作控制器的优势是什么?

在Laravel中,单动作控制器的优势是什么?,laravel,Laravel,laravel文档中有一个关于单动作控制器的主题: 我的问题是,您将在什么情况下使用此控制器?如果您选择为所有控制器使用单动作控制器,您将如何构造控制器?Michale Dyrynda似乎总结了他在以下方面的单动作控制器的用途: 结论 单动作控制器是将简单功能封装到清晰命名的类中的有效方法 它们可以在您不一定遵循RESTful方法的情况下使用;注意不要在多个控制器上为单个实体分离多个操作 您可能以前曾使用多个静态页面的单个控制器,可以考虑每个静态页面的单独命名控制器。 您可以将其他方法添加到此类

laravel文档中有一个关于单动作控制器的主题:


我的问题是,您将在什么情况下使用此控制器?如果您选择为所有控制器使用单动作控制器,您将如何构造控制器?

Michale Dyrynda似乎总结了他在以下方面的单动作控制器的用途:

结论

单动作控制器是将简单功能封装到清晰命名的类中的有效方法

它们可以在您不一定遵循RESTful方法的情况下使用;注意不要在多个控制器上为单个实体分离多个操作

您可能以前曾使用多个静态页面的单个控制器,可以考虑每个静态页面的单独命名控制器。

您可以将其他方法添加到此类,但它们应该与此控制器负责的单个操作相关

他还指出,仅当实体只需要一个操作时,才应使用这些操作:

您可以考虑将控制器StPoST命名为对控制器意图明确的方式,但我建议谨慎使用这种方法;如果您开始看到ShowPost、EditPost、CreatePost等控制器潜入您的代码库,我会重新考虑RESTful方法。更多的控制器不会伤害任何人,但我们应该聪明地知道这是什么时候做到的


Michale Dyrynda似乎在他的文章中总结了单动作控制器的作用:

结论

单动作控制器是将简单功能封装到清晰命名的类中的有效方法

它们可以在您不一定遵循RESTful方法的情况下使用;注意不要在多个控制器上为单个实体分离多个操作

您可能以前曾使用多个静态页面的单个控制器,可以考虑每个静态页面的单独命名控制器。

您可以将其他方法添加到此类,但它们应该与此控制器负责的单个操作相关

他还指出,仅当实体只需要一个操作时,才应使用这些操作:

您可以考虑将控制器StPoST命名为对控制器意图明确的方式,但我建议谨慎使用这种方法;如果您开始看到ShowPost、EditPost、CreatePost等控制器潜入您的代码库,我会重新考虑RESTful方法。更多的控制器不会伤害任何人,但我们应该聪明地知道这是什么时候做到的


这是一个有趣的问题,我的答案与laravel无关,而是与每个控制器的单个和多个动作有关

我发现,当试图为一个新的模式找到用例时,是问相反的问题,在这种情况下,每个控制器多个动作的用例什么时候有意义

答案通常是:

您有一个具有crud操作的对象,因为您使用的是sql 将所有与该对象相关的内容放入 一点

这类似于“我有一把锤子”的答案,所以一切都是螺丝钉,如果您的域像crud数据库上的薄层一样简单,那么这就是每个控制器多个操作的用例

我发现,无论你的模型有多好,任何复杂程度都会破坏控制器。原因是积垢是你的模型的一部分,而不是你的控制器

我们通常认为我们将很好地映射到控制器中的CRUD模型,有许多前端框架在这方面工作得非常出色,直到

看看应用程序最常见的方面,用户。在设置中,你会有用户索引,除了管理员,我不知道谁会查看该页面,他们通常需要额外的信息。因此,对于索引操作,您需要管理员自定义身份验证

然后创建,好吧,让一个用户创建一个用户是没有意义的,您需要确保用户不是身份验证

现在我们谈谈阅读。管理员、其他用户、当前用户和其他用户所能看到的数据差异很大,并且会慢慢增加复杂性

然后删除,这通常是罕见的动作,在一些模型上不需要,但你仍然把它放在上面,因为,你有一把锤子

更新,你把密码更新也放在这里了吗?如果用户忘记了密码怎么办?你把它放在这里了吗?否,您将执行一个名为“忘记密码”的新操作。 现在您需要更新密码操作。更新中的内容通常在一年后会变得一团糟

每种模式都有其优点和缺点,我的一般建议是,当您的系统真的是积垢时,每个控制器执行多个操作,否则您将不必维护项目超过一年。如果你有
y必须保持的复杂程度,避免模型泄漏到控制器中,并将它们分开。

这是一个有趣的问题,我的答案与laravel无关,而是与每个控制器的单个和多个操作有关

我发现,当试图为一个新的模式找到用例时,是问相反的问题,在这种情况下,每个控制器多个动作的用例什么时候有意义

答案通常是:

您有一个具有crud操作的对象,因为您使用的是sql 将所有与该对象相关的内容放入 一点

这类似于“我有一把锤子”的答案,所以一切都是螺丝钉,如果您的域像crud数据库上的薄层一样简单,那么这就是每个控制器多个操作的用例

我发现,无论你的模型有多好,任何复杂程度都会破坏控制器。原因是积垢是你的模型的一部分,而不是你的控制器

我们通常认为我们将很好地映射到控制器中的CRUD模型,有许多前端框架在这方面工作得非常出色,直到

看看应用程序最常见的方面,用户。在设置中,你会有用户索引,除了管理员,我不知道谁会查看该页面,他们通常需要额外的信息。因此,对于索引操作,您需要管理员自定义身份验证

然后创建,好吧,让一个用户创建一个用户是没有意义的,您需要确保用户不是身份验证

现在我们谈谈阅读。管理员、其他用户、当前用户和其他用户所能看到的数据差异很大,并且会慢慢增加复杂性

然后删除,这通常是罕见的动作,在一些模型上不需要,但你仍然把它放在上面,因为,你有一把锤子

更新,你把密码更新也放在这里了吗?如果用户忘记了密码怎么办?你把它放在这里了吗?否,您将执行一个名为“忘记密码”的新操作。 现在您需要更新密码操作。更新中的内容通常在一年后会变得一团糟


每种模式都有其优点和缺点,我的一般建议是,当您的系统真的是积垢时,每个控制器执行多个操作,否则您将不必维护项目超过一年。如果您有任何需要维护的复杂性,请避免模型泄漏到控制器中,并将它们分开。

这似乎是Laracasts或其他laravel论坛的一个问题。虽然我要说的是,单动作控制器是将简单功能封装到清晰命名的类中的一种有效方法,但它仅适用于问题问题。它们可以在您不一定遵循RESTful方法的情况下使用;注意不要在多个控制器上分离单个实体的多个操作。好吧,也许我会在laracasts或其他laravel论坛上询问。谢谢我已经为你们添加了一个答案,让你们接受。这似乎是Laracasts或其他laravel论坛的一个问题。虽然我要说的是,单动作控制器是将简单功能封装到清晰命名的类中的一种有效方法,但它仅适用于问题问题。它们可以在您不一定遵循RESTful方法的情况下使用;注意不要在多个控制器上分离单个实体的多个操作。好吧,也许我会在laracasts或其他laravel论坛上询问。谢谢我添加了一个答案供您接受。