插件踩坑经验:钩子重复注册📅 2025-11-25  |  👁 658 次浏览

DaoKeCMS插件开发中常见的钩子重复注册坑:

问题描述

main.php被多次require_once(虽然require_once本身防重复),但在某些边缘场景下钩子可能被重复注册,导致回调执行多次。

解决方案

// 用静态变量防重复
function myplugin_register_hooks() {
    static $done = false;
    if ($done) return;
    $done = true;
    register_hook('head', 'myplugin_head_hook');
    register_hook('footer', 'myplugin_footer_hook');
}
myplugin_register_hooks();
  • 用static变量防止重复注册
  • register_hook()内部也有去重但建议双重保险
  • 框架的require_once已防止main.php重复加载
  • 钩子回调重复执行可能导致输出重复HTML

芒阳网络团域cms开发中心

Copyright © 2023 刀客CMS内容管理系统