CodeIgniter 3 跑上 PHP 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)。 - 创建动态属性在循环里很贵,热点对象还是声明出来。
框架能跑、站点能开,比追新框架更符合这个项目的年纪。等哪天表和路由都收干净了,再谈换不换。