×

文章
2023.04.06

CodeIgniter 3 跑上 PHP 8.2

1 分钟读完 2472 次阅读 PHP PHP CodeIgniter 8.2

CI 3.0.3 在 8.2 上会刷动态属性弃用。本站还在用 3,不打算整站换框架,就把警告收干净。

两类声音

一类是核心类没声明属性,CI_Controller、CI_DB_driver 往对象上临时挂东西。给这些类加 #[AllowDynamicProperties],或在 8.2 里把 E_DEPRECATED 从对外显示里摘掉。我两处都做了:开发时仍能在日志看到,前台不弹。

另一类是自己业务代码,$this->homeid 这类要在类里写明属性。改自己的比改 system 安心。

还碰到

  • ${$var} 这种花括号取值 8.2 更严,改成明确数组。
  • null 传进 string 函数会 TypeError,入口统一 (string)。
  • 创建动态属性在循环里很贵,热点对象还是声明出来。

框架能跑、站点能开,比追新框架更符合这个项目的年纪。等哪天表和路由都收干净了,再谈换不换。