当前位置: 首页 > 后端技术 > PHP

CodeIgniter用hook钩子实现Interceptor拦截器功能

时间:2023-03-29 22:04:49 PHP

今天用ci框架的hook实现一个例子。在每次http请求之后,在返回的报文中的header头中添加设置跨域访问的属性。1.启用hookhook特性可以在application/config/config.php文件中全局启用或禁用,设置如下参数:$config['enable_hooks']=TRUE;2.定义hookhook是在application/config/hooks.php文件中定义的,每个hook可以定义成如下数组格式:'hook_resp','filename'=>'resp.php','filepath'=>'hooks','params'=>array(),);post_controller在你的控制器完全运行的末尾实现。即controller是在每个http请求处理完之后执行的。function您希望调用的方法或函数的名称。filename包含您的类或函数的文件名。filepath包含脚本文件的目录名称。注意:你的脚本必须放在application/目录下,所以filepath是相对于application/目录的路径,比如你的脚本位于application/hooks/,那么filepath可以简单的设置为'hooks',如果你的脚本位于application/hooks/utilities/,那么文件路径可以设置为'hooks/utilities',路径后面不用加斜线。params您希望传递给脚本的任何参数,可选。3.创建自定义钩子文件添加文件resp.phpoutput->set_header("Access-Control-Allow-Origin:*");header("Access-Control-Allow-Origin:*");}说明:该方案方便,低耦合,无需修改controller和method。它可以随时启用或更改