钩子 – 扩展框架核心 | Hooks – Extending the Framework Core (User guide: General) – Codeigniter 3 中文开发手册

作者: Arvin Chen 分类: php 来源: Break易站(www.breakyizhan.com)
  •   Codeigniter 3 中文开发手册

    钩子 - 扩展框架核心 | Hooks - Extending the Framework Core (User guide: General) - Codeigniter 3 中文开发手册

    CodeIgniter的Hooks特性提供了一种方法,可以在不侵入核心文件的情况下访问和修改框架的内部工作。当CodeIgniter运行时,它遵循特定的执行过程,在应用流程一页。但是,在某些情况下,您希望在执行过程的特定阶段执行某些操作。例如,您可能希望在加载控制器之前或之后运行脚本,或者在其他位置触发自己的脚本。

    启用挂钩

    属性中的下列项可以全局启用/禁用钩子功能application/config/config.php档案:

    $config['enable_hooks'] = TRUE;

    定义钩

    钩子定义在application/config/hooks.php档案。每个钩子都指定为一个数组,该原型如下:

    $hook['pre_controller'] = array(
            'class'    => 'MyClass',
            'function' => 'Myfunction',
            'filename' => 'Myclass.php',
            'filepath' => 'hooks',
            'params'   => array('beer', 'wine', 'snacks')
    );

    注:

    数组索引与您要使用的特定挂钩点的名称相关。在上面的例子中,钩点是pre_controller。下面是一个钩点列表。以下项目应在您的关联挂钩数组中定义:

    class您希望调用的类的名称。如果您更喜欢使用程序功能而不是班级,请将此项留空。函数您希望调用的函数(或方法)名称。文件名包含类/函数的文件名。文件路径包含脚本的目录的名称。注意:您的脚本必须位于应用程序/目录内的目录中,因此文件路径与该目录相关。例如,如果脚本位于application / hooks /中,则只需使用“钩子”作为文件路径。如果你的脚本位于application / hooks / utilities /你将使用'hooks / utilities'作为你的文件路径。没有结尾的斜线。PARAMS你希望传递给脚本的任何参数。此项目是可选的。

    您也可以使用lambda / anoymous函数(或闭包)作为钩子,使用更简单的语法:

    $hook['post_controller'] = function()
    {
            /* do something here */
    };

    对同一个钩子的多个调用

    如果要对多个脚本使用相同的挂钩点,只需使数组声明为多维,如下所示:

    $hook['pre_controller'][] = array(
            'class'    => 'MyClass',
            'function' => 'MyMethod',
            'filename' => 'Myclass.php',
            'filepath' => 'hooks',
            'params'   => array('beer', 'wine', 'snacks')
    );
    
    $hook['pre_controller'][] = array(
            'class'    => 'MyOtherClass',
            'function' => 'MyOtherMethod',
            'filename' => 'Myotherclass.php',
            'filepath' => 'hooks',
            'params'   => array('red', 'yellow', 'blue')
    );

    注意每个数组索引后的括号:

    $hook['pre_controller'][]

    这允许您使用多个脚本具有相同的挂钩点。定义数组的顺序是执行顺序。

    钩点

    下面是可用挂钩点的列表。

    pre_system在系统执行期间调用非常早。目前只有基准和钩子类已经加载。没有路由或其他进程发生。pre_controller在调用任何控制器之前立即调用。所有基类,路由和安全检查都已完成。post_controller_constructor在您的控制器实例化之后,但在发生任何方法调用之前立即调用。post_controller控制器完全执行后立即调用。display_override覆盖_display()方法,用于在系统执行结束时将最终页面发送到Web浏览器。这允许您使用您自己的显示方法。请注意,您需要引用CI超级对象,$this->CI =& get_instance()然后通过调用才能获得最终数据$this->CI->output->get_output()。cache_override允许您调用自己的方法,而不是_display_cache()输出库中的方法。这允许你使用你自己的缓存显示机制。post_system在最终呈现页面发送到浏览器之后调用,在最终数据发送到浏览器之后在系统执行结束时调用。

  •   Codeigniter 3 中文开发手册
  •   本文标题:钩子 – 扩展框架核心 | Hooks – Extending the Framework Core (User guide: General) – Codeigniter 3 中文开发手册 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/php/36093.html
      微信返利机器人
      免费:淘宝,京东,拼多多优惠券
      腾讯,爱奇艺,优酷的VIP视频免费解析,免费看
      即刻扫描二维码,添加微信机器人!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注