本文概述
- 启用挂钩
- 定义一个挂钩
- 多次呼叫同一个挂钩
- 挂钩点
- 挂钩示例
CodeIgniter中有两个挂钩文件。一个是application / config / hooks.php文件夹, 另一个是application / hooks文件夹。
换句话说, 如果要在每次加载控制器构造函数后都运行代码, 则可以在钩子中指定该脚本路径。
启用挂钩 要启用挂钩, 请转到application / config / config.php文件并将其设置为TRUE, 如下所示。
$config['enable_hooks'] = TRUE;
定义一个挂钩 钩子可以在application / config / hooks.php文件中定义。每个挂钩被定义为一个由以下术语组成的数组。
$hook['pre_controller'] = array(
'class' =>
'Classname', 'function' =>
'functionname', 'filename' =>
'filename.php', 'filepath' =>
'hooks', 'params' =>
array('element1', 'element2', 'element3')
);
class-在这里, 你必须提及在hooks.php文件中定义的类的名称。如果你使用过程函数而不是类, 请将其留空。
函数-提及你正在调用的函数名称。
filename-在application / hooks文件夹中创建的文件名, 包含上面提到的类和函数名。
filepath-在这里你必须提及包含脚本的目录的名称。你的脚本必须位于应用程序文件夹内。如果你的脚本位于application / hooks文件夹中, 那么你的路径将仅仅是钩子。但是, 如果你的脚本位于application / hooks / office文件夹中, 则你的路径将为hooks / office。
params-它包含你要在脚本中传递的参数, 并且是可选的。
多次呼叫同一个挂钩 你可以使用多维数组来通过多个脚本使用同一挂钩点。
$hook['pre_controller'][] = array(
'class' =>
'Classname1', 'function' =>
'functionname1', 'filename' =>
'filename1.php', 'filepath' =>
'hooks', 'params' =>
array('element1', 'element2', 'element3')
);
$hook['pre_controller'][] = array(
'class' =>
'Classname2', 'function' =>
'functionname2', 'filename' =>
'filename2.php', 'filepath' =>
'hooks', 'params' =>
array('element4', 'element5', 'element6')
);
括号[]使你可以在多个脚本中使用相同的挂钩点。你的执行顺序将与定义的数组相同。
挂钩点 挂钩点列表如下所示。
- 系统前 It is called much before the system execution. Only benchmark and hook class have been loaded at this point.
- 前置控制器 It is called immediately prior to your controller being called. At this point all the classes, security checks and routing have been done.
- post_controller_constructo It is called immediately after your controller is started, but before any method call.
- 后控制器 It is called immediately after your controller is completely executed.
- display_override It is used to send the final page at the end of file execution.
- cache_override It enables you to call your own function in the output class.
- 后系统 It is called after the final page is sent to the browser at the end of the system execution.
2)在application / controller文件夹中创建一个Controller文件example.php
<
?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Example extends CI_Controller {
public function index()
{
echo "CodeIgniter Tutorial";
}
}
使用网址运行上述程序时,
http://localhost/hooks/index.php/example, 将显示以下输出。
文章图片
3)在application / hooks文件夹中创建一个钩子文件exm.php。
<
?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Exm extends CI_Controller {
public function tut()
{
echo "Welcome to srcmini. This is ";
}
}
?>
4)现在, 你必须在application / config / hooks文件夹中定义钩子。
<
?php
defined('BASEPATH') OR exit('No direct script access allowed');
$hook['pre_controller'] = array(
'class' =>
'Exm', 'function' =>
'tut', 'filename' =>
'exm.php', 'filepath' =>
'hooks', );
?>
【CodeIgniter钩子用法】5)现在, 再次使用相同的URL运行程序, 然后查看结果。
文章图片
推荐阅读
- 在CodeIgniter中传递参数
- URL路由详解
- CodeIgniter库详解
- CodeIgniter助手详解
- CodeIgniter方法详解
- 在CodeIgniter中创建基本站点
- CodeIgniter URL详解
- CodeIgniter第一个示例
- CodeIgniter控制器详解