CodeIgniter3 HMVC搭配PHP8.2出现str_replace废弃错误求助
解决CodeIgniter 3 HMVC + PHP 8.2的str_replace废弃通知错误
问题根源
PHP 8.2对函数参数类型检查更严格,str_replace()的第一个参数不允许传入null类型。当前MX/Controller.php第46行的代码中,CI::$APP->config->item('controller_suffix')可能返回null(当config.php中未显式设置该配置项时),触发废弃通知。
解决方案
方案1:修改MX/Controller.php代码,处理null参数
打开third_party/MX/Controller.php,找到第46行的代码,修改为以下两种方式之一:
方式A:先获取并处理配置值
// 先获取配置项,若为null则设为空字符串 $controller_suffix = CI::$APP->config->item('controller_suffix') ?? ''; $class = str_replace($controller_suffix, '', get_class($this));
方式B:直接在str_replace中使用空值合并运算符
$class = str_replace(CI::$APP->config->item('controller_suffix') ?? '', '', get_class($this));
方案2:显式设置CodeIgniter配置项
打开application/config/config.php,添加或修改以下配置项,确保controller_suffix有明确的字符串值(空字符串也可以):
$config['controller_suffix'] = '';
原理说明
两种方案都是确保str_replace()的第一个参数始终是字符串类型(即使是空字符串),符合PHP 8.2的参数类型要求,从而消除废弃通知。
内容的提问来源于stack exchange,提问作者Oscar Mgaya
相关产品推荐
相关产品推荐

