PHP 8.1 引入了方法返回类型的行为更改。在以前的版本中,您可以定义方法而不指定返回类型。但是,PHP 8.1 现在默认要求从接口声明或继承的方法返回类型。此更改旨在提高类型安全性并确保返回值与接口约定保持一致。
当将返回类型添加到以前的无类型方法时,PHP 8.1 会检查返回值的类型是否符合声明的返回值类型。例如,如果接口中的方法定义为:
<code class="php">interface Countable { public function count(): int; }</code>
并且实现 Countable 的类:
<code class="php">class Example implements Countable { public function count() { return 42; } }</code>
PHP 8.1 将引发弃用通知,因为返回值未显式输入为整数,这与接口定义相矛盾。
要解决此问题,有两个主要选项:
<code class="php">class Example implements Countable { public function count(): int { return 42; } }</code>
<code class="php">class Example implements Countable { #[\ReturnTypeWillChange] public function count() { return 42; } }</code>
需要注意的是,PHP 9.0 打算强制执行返回类型,因此不需要使用 #[ReturnTypeWillChange]。因此,建议逐步迁移代码以显式指定返回类型,并尽可能删除该属性的使用。
以上是如何处理 PHP 8.1 中的返回类型不匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!