代码之家  ›  专栏  ›  技术社区  ›  BMBM

前控制器插件和动作助手有什么区别?[副本]

  •  2
  • BMBM  · 技术社区  · 14 年前

    可能重复:
    Zend Framework: Controller Plugins vs Action Helpers

    我知道技术上的区别是什么,以及如何注册前端控制器插件/动作助手,但如果在zend框架方面有更多经验的人能为我解释这两个不同的用例(示例会很好),那将真的对我有帮助。

    谢谢!

    2 回复  |  直到 7 年前
        1
  •  4
  •   David Snabel-Caunt    14 年前

    前控制器插件在MVC周期的特定阶段为每个请求执行。您可以使用它执行类似于检查用户是否经过身份验证或将请求记录到数据库以进行分析的工作。

    控制器动作助手也可以在MVC周期的不同阶段执行,尽管这不是必需的。插件和动作助手之间的关键区别在于,您的控制器可以与动作助手交互以改变其行为,或者使用一些按需功能。

    控制器/助手挂钩示例:

    您有一个操作助手,在preDispatch时检查用户是否已登录,如果没有,则要求用户登录。在登录控制器中,您希望此规则出现异常,否则将无限循环。在登录控制器的init方法中,可以执行以下操作,因为init()是在preDispatch之前调用的:

    public function init() {
       $this->_helper->myHelper->setAuthenticationRequired(false);
    }
    

        2
  •  2
  •   Julien    14 年前

    一个很好的资源是这个UML图: http://www.kitpages.fr/cms/site/tutoriaux/sequence_globale.jpg

    你可以看到 Plugins 然后 Helpers ,黄色区域为调度回路。

    帮手 挂钩(#17和#22) 不会被触发

    我主要使用:

    • 插件 对于繁重的逻辑要求 项目范围
    • 对大多数人来说 具体任务 action (比如排序、过滤、分页、json编码、pdf下载) 避免代码重复 在许多行动中