全部
常见问题
产品动态
精选推荐

PHP 8.6 迁移检查清单

管理 管理 编辑 删除

📌 一、弃用 & 将被移除的功能

1️⃣ 动态属性写入

  • 风险:PHP 8.2 开始动态属性写入已触发 E_DEPRECATED,PHP 8.6 将更严格。
  • 排查:使用 #[AllowDynamicProperties] 或者在类里显式定义所有属性。
php复制编辑class User {
    public string $name;
}
// 不要在外部动态 $user->age = 30;


2️⃣ utf8_encode() 和 utf8_decode()

  • 很可能在 8.6 标记弃用,为 PHP 9 移除做准备。
  • 改用 mb_convert_encoding()。


3️⃣ 老的 Serializable 接口

  • 推荐改用 __serialize() 和 __unserialize()。


4️⃣ create_function()

  • 已弃用多年,若还存在必须替换为 Closure 或 fn()。


📌 二、类型 & 严格性提升

1️⃣ 未定义变量或数组键

  • PHP 8.6 会继续提高“未定义”抛错的覆盖率。
  • 尤其是空数组自动追加:$a = false; $a[] = 1; → 会抛 TypeError。


2️⃣ 内置函数对 null 的容忍度

  • 例如:strlen(null)、array_keys(null),未来会直接抛 TypeError。
  • 建议静态分析时启用 strict_types=1 并使用 Psalm / PHPStan 检查。


3️⃣ #[Override] 属性

  • 若用 #[Override] 标记,必须真覆盖父类/接口,trait 也要匹配。
  • 保证方法签名一致,否则 8.6 将报错。


4️⃣ 交叉类型(Intersection Types)

  • 检查是否使用组合类型,8.6 中解析器对复杂场景会更严格,建议单测覆盖。


📌 三、语法层面

1️⃣ 字符串插值

  • ${var} 这种复杂插值语法将逐步废弃,建议统一用 "Hello $var" 或 "Hello {$var}"。


2️⃣ 静态变量

  • 静态变量类型更严格,推荐总是初始化时指定值。


📌 四、配置 & 性能

1️⃣ OPCache

  • 检查 opcache.validate_timestamps、opcache.jit 配置是否符合预期。
  • 有些 JIT/inline 行为可能影响微小性能,升级后需重新 benchmark。


2️⃣ GC 行为

  • 若项目对垃圾回收敏感(如长驻 CLI、Swoole),观察 gc_status() 输出是否有异常循环引用。


3️⃣ Randomizer

  • 如果依赖随机数可重复性,尽量显式指定 Random\Engine 而非 rand() / mt_rand()。


📌 五、推荐工具

✅ 启用:

  • declare(strict_types=1);
  • 静态分析:PHPStan / Psalm
  • composer outdated 检查依赖是否支持 PHP 8.6。


🚦 一行总结

“先修所有 E_DEPRECATED,清理所有未定义用法,跑静态分析,一切稳了!”


如果需要,我可以帮你出:

  • 一份 VSCode / PHPStorm 的检测规则清单
  • 一份 .phpcs.xml 检查规范
  • 一个 8.6 升级的 Composer 依赖兼容性检查脚本
请登录后查看

小码二开 最后编辑于2025-06-29 12:55:23

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
打赏
已打赏¥{{reward_price}}
35
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服