有人可以给出一些控制器插件和动作助手(Controller Plugins and Action Helpers)之间的区别的提示和/或示例吗?是否存在特定任务可以使用其中一种而不是另一种?对我来说,它们看起来几乎一样,我经常很难决定何时使用什么......它们之间有任何重大差异吗?
有人可以给出一些控制器插件和动作助手(Controller Plugins and Action Helpers)之间的区别的提示和/或示例吗?是否存在特定任务可以使用其中一种而不是另一种?对我来说,它们看起来几乎一样,我经常很难决定何时使用什么......它们之间有任何重大差异吗?
控制器插件可以钩入路由过程中任何控制器的任何阶段(preDispatch postDispatch, routeStartup, routeShutdown),这使它们非常适合提供像ACL强制执行这样的幕后功能。
Action Helpers是可重复使用但可选的部分,您的控制器可能需要访问(重定向器、flashMessenger等)。
因此,如果您正在创建一个始终需要执行自身的可重用代码片段,则使用控制器插件,否则您可能需要使用操作助手。
动作助手还可以访问正在执行的实际控制器对象。控制器插件只能访问FrontController,因此仅限于控制器和操作名称。
使用哪种取决于您需要的上下文。例如,如果您需要访问附加到控制器的视图对象,则需要使用Action Helper。