PHP7.4.29兼容改造:替换OpenCart日志类的联合类型管道符
解决OpenCart中PHP8.0联合类型代码兼容PHP7.4的语法错误问题
PHP7.4不支持PHP8.0引入的string|array联合类型语法,这就是你遇到Parse error: syntax error, unexpected '|'的原因。以下是两种兼容修改方案:
方案1:直接移除参数类型声明
因为print_r()函数本身可以处理字符串和数组类型的输入,移除类型声明不会影响原有功能:
public function write($message): void { $this->message .= date('Y-m-d H:i:s') . ' - ' . print_r($message, true) . "\n"; }
方案2:保留类型提示意图(使用DocBlock注释)
如果需要让IDE或其他开发者明确参数允许的类型,可以用PHP文档注释替代原生联合类型声明:
/** * @param string|array $message 要写入日志的内容 * @return void */ public function write($message) { $this->message .= date('Y-m-d H:i:s') . ' - ' . print_r($message, true) . "\n"; }
两种方案都能解决PHP7.4下的语法错误,同时保持原有的日志写入逻辑不变。
内容的提问来源于stack exchange,提问作者George Murphy
相关产品推荐
相关产品推荐

