SuperAPI AI 工具集

php-migration

通用与其它

查看项目

更新于 10-15 17:24

技能介绍

用途:为 baserCMS 项目升级 PHP 版本时,定位并修复非弃用警告与破坏性变更提供配方集,按 PHP 8.2、8.4、8.5 分版本整理。框架本身(CakePHP)起因的问题归入另一技能 cakephp-migration。

主要能力:区分致命错误与非弃用警告(logs/debug.log 中 debug: 行为警告,Fatal/Exception 才是错误);PHP 8.2 的未声明动态属性(推荐改为类属性声明,基类可加 #[\AllowDynamicProperties]);PHP 8.4 的隐式 nullable 参数(改为 ?类型)、fgetcsv 的 $escape 参数省略、ReflectionProperty::setValue 单参数调用、向内部函数 string 参数传 null;PHP 8.5 的保留类名 use 引用(致命)、非正规类型转换名、null 作数组偏移、对对象自动释放的资源函数、setAccessible() 非弃用、非数值字符串自增、__sleep/__wakeup、$http_response_header、反引号、case 用分号结尾、ArrayObject 传入对象等,并给出 grep 检测与 sed 批量删除等命令。

使用方式:先用 php -l 或 debug 日志定位警告文件与行,归类到对应版本模式后修正;机械可替换项用 grep 批量检测;修正后用 php -l 复查,再以 --filter 单测、最后跑全量测试。全非弃用的完整检测可用 Rector 等静态分析。单元测试方法见 basercms-unittest 技能。

限制:部分替换目标仅存在于较新 PHP(如 str_increment 需 8.3+、http_get_last_response_headers 需 8.4+、命名空间 PDO 需 8.4+),在维持 8.1 兼容期间应据资料标注暂缓;null 数组偏移、向 string 传 null 等仅运行时触发,静态 grep 难以覆盖,需汇总测试日志定位。全量测试偶发因全局状态污染产生连锁错误,应以隔离与重跑确认。具体收费、安装方式暂未提供。