旧PHP论坛出现class_bbcode::convert_emoticon方法声明兼容警告求助
修复PHP论坛中class_bbcode::convert_emoticon方法兼容性警告
这个警告的本质是子类class_bbcode的convert_emoticon方法参数签名和父类class_bbcode_core的同名方法不匹配,违反了PHP面向对象的方法重写兼容规则。
具体修复步骤:
- 找到
class_bbcode类里convert_emoticon的方法定义,把参数改成和父类一致的$code = '', $image = ''。 - 由于子类方法原本可能是作为正则替换回调接收
$matches数组,需要在方法内部做参数兼容处理,从传入的数组中提取所需的$code和$image值。示例代码如下:
class class_bbcode extends class_bbcode_core { public function convert_emoticon($code = '', $image = '') { // 兼容正则回调传入的数组参数 if (is_array($code)) { $matches = $code; $code = $matches[1] ?? ''; $image = $matches[2] ?? ''; } // 保留原本的convert_emoticon方法逻辑 } }
- 额外检查:如果父类
class_bbcode_core的convert_emoticon方法有返回类型声明,子类方法的返回类型必须完全一致;若PHP开启了strict_types=1严格类型模式,还要确保参数类型也严格匹配。
内容的提问来源于stack exchange,提问作者Paolo D.
相关产品推荐
相关产品推荐

