迅睿二次开发

钩子特性提供了一种方法来修改框架的内部运作流程,而无需修改核心文件。有些时候你可能希望在执行流程中的某些阶段添加一些动作,例如在控制器加载之前或之后执行一段脚本, 或者在其他的某些位置触发你的脚本。

钩子开发说明

钩子特性提供了一种方法来修改框架的内部运作流程,而无需修改核心文件。有些时候你可能希望在执行流程中的某些阶段添加一些动作,例如在控制器加载之前或之后执行一段脚本, 或者在其他的某些位置触发你的脚本。

迅睿函数大全迅睿基础设置迅睿二次开发迅睿模版制作迅睿缓存在线生成迅睿CMS标签大全

钩子特性提供了一种方法来修改框架的内部运作流程,而无需修改核心文件。

有些时候你可能希望在执行流程中的某些阶段添加一些动作,例如在控制器加载之前或之后执行一段脚本, 或者在其他的某些位置触发你的脚本。


钩子程序文件

./config/hooks.php 此文件是网站钩子的定义文件,你可以把脚本写在这里。

执行方法格式

\Phpcmf\Hooks::on(挂钩点名称, 执行代码函数, 执行序号越大越优先);
或者
\Phpcmf\Hooks::app_on(插件名称, 挂钩点名称, 执行代码函数, 执行序号越大越优先);

挂钩点名称,由系统提供以便二次开发。

执行代码,你可以使用lambda表达式(匿名函数或闭包)作为钩子执行,这样语法更简单:

// appname指插件目录,表示这个插件在调用,方便排查是哪个插件在调用这个钩子
\Phpcmf\Hooks::app_on('appname', 'some_hook', function($foo, $bar, $baz) {
        ...
});

执行序号,越大越靠前执行,不传入就按默认顺序。

一、系统自带的钩子

系统会内置一些常用的钩子,例如:

CMS_init     系统初始化后执行
CMS_close    系统关闭时
CMS_end      系统post执行结束时
CMS_404      系统404时
CMS_view     模板解析之后
....

我们会根据开发者的需求来增加一些常用的钩子,当开发者需要时,可以给框架创始人提出。

二、自定义:无返回值的钩子

定义钩子点

\Phpcmf\Hooks::trigger('CMS_diy_hook');

定义执行钩子函数

// appname指插件目录,表示这个插件在调用,方便排查是哪个插件在调用这个钩子
\Phpcmf\Hooks::app_on('appname', 'CMS_diy_hook', function() {
        // 这里写执行代码
});


三、自定义:有返回值的钩子

定义钩子点

$rs = \Phpcmf\Hooks::trigger_callback('CMS_diy_hook_callback');
if ($rs && isset($rs['code']) && $rs['code']) {
    
    var_dump($rs); // 打印返回格式
}

定义执行钩子函数

// appname指插件目录,表示这个插件在调用,方便排查是哪个插件在调用这个钩子
\Phpcmf\Hooks::app_on('appname', 'CMS_diy_hook', function() {
        // 这里写执行代码
        return dr_return_data(1, '表示之间返回的值,也就是最终的值,不往下面执行');

        return false; // 表示可以执行下面的钩子
});

本文属原创,转载请注明原文:https://www.zhimatong.com/jiaocheng/1048.html

为保证教程的实用性及扩大知识面覆盖,如果您有相似问题而未解决,可联系在线客服免费技术支持。

内容有用

联系
顾问

交流群 购物车
账号登录

没有账号?立即注册

忘记密码

登录即同意用户协议没有账号? 立即注册
账号注册
我已阅读并同意用户协议
立即注册
注册即同意用户协议已有账号? 立即登录
找回密码

操作步骤:邮箱验证->设置新密码

注册即同意用户协议已有账号? 立即登录