您的位置:首页 > 编程语言 > PHP开发

CI框架下hooks使用说明以及它的作用

2014-12-08 17:18 447 查看
//hooks源码

//hooks即钩子,主要作用是CI框架下扩展base_system,他的主要作用是在CI启动时,

//运行一些开发者定义的一些方法,来实现一些特定的功能

//在application/config/hooks.php中定义的要在CI启动时启动的方法定义

$hook['pre_controller'][] = array(

                                'class'    => 'MyClass',

                                'function' => 'Myfunction',

                                'filename' => 'Myclass.php',

                                'filepath' => 'hooks',

                                'params'   => array('beer', 'wine', 'snacks')

                                );

$hook['pre_controller'][] = array(

                                'class'    => 'MyOtherClass',

                                'function' => 'MyOtherfunction',

                                'filename' => 'Myotherclass.php',

                                'filepath' => 'hooks',

                                'params'   => array('red', 'yellow', 'blue')

                                );

//hooks源码 首先判断hooks中(即自定义的类似于上面数组)是否存在或者是不是二位数组

if (isset($this->hooks[$which][0]) AND is_array($this->hooks[$which][0])){
//如果是则进行循环,并且运行run_hook
foreach ($this->hooks[$which] as $val){
$this->_run_hook($val);
}

}else{
//如果不是,则直接运行hooks
$this->_run_hook($this->hooks[$which]);

}

//下面设置$this->in_progress = TRUE;主要是防止同时调用一个hook,当new了一个新的对象后,

//就要把in_progress标记为false

$this->in_progress = TRUE;

if ($class !== FALSE){
if ( ! class_exists($class)){
require($filepath);
}
$HOOK = new $class;
$HOOK->$function($params);

}else{
if ( ! function_exists($function)){
require($filepath);
}

$function($params);

}

$this->in_progress = FALSE;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CI PHP hooks 作用 用法