我应该如何处理 PHP 中的返回类型弃用通知?

Linda Hamilton
发布: 2024-11-01 03:38:27
原创
535 人浏览过

How Should I Handle Return Type Deprecation Notices in PHP?

参考:...的返回类型应该与...兼容,或者应该使用#[ReturnTypeWillChange]属性

背景:返回类型和协方差

自 PHP 7.0 起,函数和方法的返回类型已经可用。这形成了其他代码可以依赖的契约。

例如:

<code class="php">class Base {
    public function getList(): Iterator {
       // ...
    }
}

// Calling code:
$foo = new Base();
var_dump($foo instanceOf Base); // true
var_dump($foo->getList() instanceOf Iterator); // true</code>
登录后复制

扩展类时,可以定义更具体的返回类型(协方差)。但是,不允许指定不同的返回类型或不指定返回类型。

向后兼容性和弃用

向现有类或接口添加返回类型需要更改扩展或实现类。随着 PHP 8.0 中联合类型的引入,返回类型被记录下来,但不会作为错误强制执行。相反,添加了弃用通知。

#[ReturnTypeWillChange] 属性

需要支持多个 PHP 版本和 8.0 之前的返回类型的冲突代码导致了 #[ReturnTypeWillChange] 的开发] 属性。当添加到方法中时,它会抑制 PHP 8.1 中的弃用通知。这为在 PHP 9.0 之前纠正该问题提供了时间,其中可能会强制执行内部返回类型。

解决方案

  1. 从折旧通知中识别方法并正确返回类型。
  2. 决定你的行动方案:

    • 等待库或扩展更新(无需任何操作)。
    • 检查类是否已返回正确的类型。
    • 确定更改返回类型对于您的应用程序和扩展类是否安全。
  3. 更改返回类型是否安全:

    • 添加返回类型。
  4. 如果您需要支持较旧的 PHP 版本或未更新的代码:

    • 添加 #暂时 [ReturnTypeWillChange] 属性。

以上是我应该如何处理 PHP 中的返回类型弃用通知?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板