PHP 7.4.3命名空间类返回类型不匹配(TypeError),mixed类型仍报错
解决思路
- 核心原因:PHP 7.4不支持
mixed作为原生返回类型声明,mixed是PHP 8.0才正式引入的类型。在PHP 7.4中,编译器会将mixed识别为一个需要在当前命名空间(jc21\Movies)下查找的类名,找不到对应类时就会抛出类型不匹配的错误。 - 方案1:升级PHP版本
将PHP版本升级到8.0及以上,原生支持mixed类型声明,无需修改代码即可解决问题。这也是最贴合项目设计意图的方案。 - 方案2:修改方法返回类型
若无法升级PHP版本,可修改Movie类的jsonSerialize方法:- 直接移除
: mixed的返回类型声明,保留注释中的@return mixed即可; - 或者根据
$this->data的实际类型,明确声明返回类型(比如实际返回数组就写: array)。修改后的示例代码:// 移除返回类型声明 public function jsonSerialize() { return $this->data; } // 或明确返回数组类型 public function jsonSerialize(): array { return $this->data; }
- 直接移除
- 额外提示:检查该plex-api项目的官方文档或composer.json,确认其要求的PHP版本。如果项目本身是为PHP 8+开发的,升级PHP版本能避免后续更多的版本兼容问题。
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

