去评论
dz插件网

原创:cursor+claude-code历经一个月开发出来的discuz x5.0万能插件应用升级助手可以把所有X3.5插件直接升级为X5.0可用

惧愁人
2026/01/29 10:37:02
原创:cursor+claude-code历经一个月开发出来的discuz x5.0万能插件应用升级助手可以把所有X3.5插件直接升级为X5.0可用:
这款工具的核心在于:要在不破坏原有逻辑的前提下,对混合了X5.0与X3.5 HTML、JS、PHP 和 Discuz 原有函数、模板、语法的代码进行精准的 AST(抽象语法树)级修改。

核心功能实现细节:
1. PHP 文件改造:基于 token_get_all 的精准手术
痛点:简单的正则替换(preg_replace)无法区分 $arr[key] 是在 PHP 代码中、字符串中、还是 SQL 语句中,极易误伤。 解决方案:使用 PHP 原生词法分析器 token_get_all()。
算法逻辑(PhpSyntaxFixer.php):
关键代码逻辑实现(伪代码):
2. 模板文件改造:分层解析策略
痛点:.htm 文件是 HTML(含 JS/CSS)与 Discuz 标签(``, {loop})的混合体。误改 JS 中的 `obj[key]` 会导致前端崩溃。 解决方案“提取-修复-回填”策略
算法逻辑(TplTagFixer.php):
3. 智能排除与配置
  • .git/SVN 忽略:内置硬编码排除。
  • 配置化:读取 upgrade_ignore.txt,支持通配符(如 source/plugin/my_old_plugin/*)。


工具核心亮点:
极高的升级效率(由周变分钟)
  • 人工排查一个中型插件的 $arr[key] 和废弃函数可能需要 1-2 天。此工具 5 秒内完成全量扫描和 95% 的自动修复。

AST 级的精准度(拒绝误杀)
  • 不同于简单的“查找替换”工具,它真正“理解” PHP 语法。它知道字符串里的 $arr[key] 不需要改,也知道 HTML 里的 JS 不需要改。这是它最大的技术壁垒。

X5.0/PHP 8.2+ 兼容性的一键就绪
  • 直接解决 PHP 8.2 最头疼的 Deprecated 和 Fatal Error(数组键未定义、空指针解引用前置检查等),让老旧的 X3.x 应用能在新环境下跑起来。

工程化交付
  • 自动备份、详细的变更日志(Diff Log)、可配置的黑白名单,符合企业级开发运维规范。


获取下载地址:
[此处包含隐藏内容,如果需要查看请回复]