php中ci钩子,CodeIgniter钩子用法

本文概述

在CodeIgniter中, 挂钩是可以在程序执行之前和之后调用的事件。它允许在CodeIgniter执行过程中执行具有特定路径的脚本, 而无需修改核心文件。例如, 它可用于需要在执行控制器之前检查用户是否已登录的地方。使用钩子可以节省你多次编写代码的时间。

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.

挂钩示例

1)首先, 如上所述, 在你的CodeIgniter文件夹中启用该挂钩。

2)在application / controller文件夹中创建一个Controller文件example.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, 将显示以下输出。

670ee425995ba8068129a3ceaaff7f1b.png

3)在application / hooks文件夹中创建一个钩子文件exm.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文件夹中定义钩子。

defined('BASEPATH') OR exit('No direct script access allowed');

$hook['pre_controller'] = array(

'class' => 'Exm', 'function' => 'tut', 'filename' => 'exm.php', 'filepath' => 'hooks', );

?>

5)现在, 再次使用相同的URL运行程序, 然后查看结果。

0749b05452230e913ba5a24f2a4d3801.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值