首页 > 后端开发 > php教程 > PHP 的 Nullsafe 运算符 (?-) 如何防止空指针异常?

PHP 的 Nullsafe 运算符 (?-) 如何防止空指针异常?

Patricia Arquette
发布: 2024-12-19 07:07:26
原创
656 人浏览过

How Can PHP's Nullsafe Operator (?-) Prevent Null Pointer Exceptions?

PHP 中的 Nullsafe 运算符:实现条件对象导航

在 PHP 中,访问对象属性和调用方法可能会导致空指针异常,如果该对象为空或没有请求的成员。为了解决这个问题,PHP 8 中引入的 nullsafe 运算符 (?-) 可以安全地导航对象属性和方法。

考虑以下语句:

echo $data->getMyObject() != null ? $data->getMyObject()->getName() : '';
登录后复制

此语句检查是否$data 对象具有 getMyObject() 属性,如果它不为 null。如果该属性存在且不为 null,它将继续访问该对象内的 getName() 属性。但是,如果该属性不存在或者为 null,则该语句将不会继续执行。

使用 nullsafe 运算符,我们可以将语句重写为:

echo $data->getMyObject()?->getName();
登录后复制

在此语句中,如果 $data 为 null 或不具有 getMyObject() 属性,则运算符链终止,并返回 null。这使我们能够优雅地处理缺失的属性或方法调用,而不会出现异常。

nullsafe 运算符与以下访问对象属性和方法的运算符一起使用:

  • 数组访问 ([]) : $data?->[0]
  • 属性访问 (->): $data?->name
  • Nullsafe 属性访问 (?->): $data?->name
  • 静态属性访问 (::): Parent::name
  • 方法调用 (->): $data->getName()
  • Nullsafe 方法调用(?->): $data?->getName()
  • 静态方法调用 (::): Parent::getName()

例如代码下面:

$string = $data?->getObject()->getName() . " after";
登录后复制

相当于:

$string = (isset($data) && $data !== null) ? $data->getObject()->getName() . " after" : null;
登录后复制

如果 $data 是null.

通过使用 nullsafe 运算符,我们可以编写更干净、更简洁的代码,同时确保不出现空指针异常。

以上是PHP 的 Nullsafe 运算符 (?-) 如何防止空指针异常?的详细内容。更多信息请关注PHP中文网其他相关文章!

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