钩子开发说明 2023-09-25 15:05:31 0 0 钩子特性提供了一种方法来修改框架的内部运作流程,而无需修改核心文件。 有些时候你可能希望在执行流程中的某些阶段添加一些动作,例如在控制器加载之前或之后执行一段脚本, 或者在其他的某些位置触发你的脚本。 钩子程序文件 ./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; // 表示可以执行下面的钩子 }); 收藏(0)