如何解决致命错误:Foo声明:: __ toString:void必须与Stringable :: __ toString:string兼容 什么是可串连的?
升级到PHP 8后,我现在看到此Fatal error
的代码有什么问题?这是什么Stringable
?
解决方法
在PHP 8之前,程序员可以编写魔术方法,这些魔术方法的签名与它们的内部签名不匹配。
例如
class Foo {
public function __toString(): void {
}
}
尽管返回类型void
与方法的documentation不匹配
public __toString ( void ) : string
PHP没有抱怨!
但是,随着PHP 8的出现,魔术方法的签名必须遵循该魔术方法的文档。
public function __toString(): string {
}
否则,您会看到Fatal error
!
注意:__construct()
和__destruct()
被排除在此新更改之外,因为几乎没有每种计算机语言都返回值的概念。
什么是可串连的?
Stringable
是一个接口,会自动添加到实现__toString()
方法的类中
有关更多信息,请参见RFC。
,您必须从以下位置重构函数__toString()
:
public function __toString(): void {
//definition
}
函数返回string
值。
public function __toString(): string {
//definition
return 'some string';
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。