我的函数是__toString
:
public function __toString(): string
{
return json_encode($this->payload);
}
这是我从PhpStan收到的错误,阻止我进行提交:
方法App\DTO\GenericMessageDTO::u toString()应返回字符串,但返回字符串| false。
我尝试了异常,但与我的PHP 7.2不兼容,它说从“__toString”抛出异常是唯一可能的,因为PHP 7.4
public function __toString(): string
{
if ($this->payload === false) {
throw new \Exception("No payload");
}
return json_encode($this->payload);
}
我怎样才能解决这个问题?
您直接从json_encode
返回,此遗留函数的返回类型为string | false
,如下所述。如果由于任何原因未能编码$payload
,它将返回false
,而不是字符串。
正如您所发现的,除非升级到7.4(越快越好),否则不接受在\uu toString()
中抛出异常
这将是一个简单的方法来修复您的toString()
声明,以确保您总是返回一个字符串。
public function __toString(): string
{
return json_encode($this->payload) ?: '';
}