海豚CMS中的钩子功能在Ci基础上得到了功能增强,使得您可以在不修改系统核心文件的基础上来改变或增加系统的核心运行功能。 当CMS运行后,它会产生出一个特殊的进程。 当然,您可以自定义一些动作来替代程序运行过程中的某些阶段。例如,您可以在控制器刚刚载入前或刚刚载入后来运行特定的脚本,或者在其他时刻来触发您的脚本。

    一、挂钩点

    挂钩点就是【钩子名称】分类列出的钩子动作,钩子名称就是挂钩点的名称。

    二、定义钩子配置

    建议将钩子配置在config/my_hooks.php中,打开这个文件如下图所示:

    1. <?php
    2. /**
    3. * 我的钩子定义配置
    4. */
    5. defined('BASEPATH') OR exit('No direct script access allowed');
    6. /*
    7. $hook['钩子名称'][] = array(
    8. 'class' => '类名称',
    9. 'function' => '方法名称',
    10. 'filename' => '钩子文件.php',
    11. 'filepath' => 'hooks',
    12. );
    13. */
    参数介绍
    class就是类的名称
    function方法名称
    filename钩子文件的php文件名称
    filepath钩子路径,默认相对于dayrui/目录,支持绝对目录

    同一挂钩点的多次引用

    本例以【会员注册之前】钩子为例

    1. $hook['member_register_before'][] = array(
    2. 'class' => 'my_hooks',
    3. 'function' => 'reg',
    4. 'filename' => 'my_hooks.php',
    5. 'filepath' => 'hooks',
    6. );

    将以上代码放到my_hooks.php中

    三、钩子运行程序

    上面配置好了钩子文件,这里就改写钩子的运行程序了

    按上面的配置创建文件/dayrui/hooks/my_hooks.php。

    1. <?php
    2. /**
    3. * Created by PhpStorm.
    4. * User: chunjie
    5. * Date: 14-6-23
    6. * Time: 17:11
    7. */
    8. class my_hooks {
    9. public $ci;
    10. /**
    11. * 构造函数
    12. */
    13. function __construct() {
    14. $this->ci = &get_instance();
    15. }
    16. function reg($data) {
    17. if ($data['username'] == 'admin') {
    18. $this->ci->member_msg('亲,admin名称不允许注册哦');
    19. }
    20. }
    21. }

    上面的以上就是用户输入“admin”提交注册时,会返回上段代码的提示,这就是钩子的优势,不需要修改程序源代码。

    文档最后更新时间:2014-06-27 18:52:02