php - PHP 中有 "nullsafe operator"吗?

标签 php operators chaining php-8 nullsafe

有没有办法使用某种 safe navigation operator 来编写以下语句? ?

echo $data->getMyObject() != null ? $data->getMyObject()->getName() : '';

所以它看起来像这样:

echo $data->getMyObject()?->getName();

最佳答案

从 PHP 8 开始,您可以使用 null safe operator它与 null 合并运算符相结合允许您编写如下代码:

echo $data->getMyObject()?->getName() ?? '';

通过使用 ?-> 而不是 -> 运算符链被终止,结果将为空。

“查看对象内部”的运算符被视为链的一部分。

  • 数组访问([])
  • 属性访问 (->)
  • Nullsafe 属性访问 (?->)
  • 静态属性访问 (::)
  • 方法调用(->)
  • Nullsafe 方法调用 (?->)
  • 静态方法调用(::)

例如对于代码:

$string = $data?->getObject()->getName() . " after";

如果 $data 为 null,该代码将等同于:

$string = null . " after";

由于字符串连接运算符不是“链”的一部分,因此不会短路。

关于php - PHP 中有 "nullsafe operator"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12351737/

相关文章:

typescript - 带有省略类型的 TypeScript 中的函数链接

javascript - 通过 Mocha 测试表示链式方法和成员 Typescript

php - 使用 php 和 MySql 处理单引号和双引号插入问题的简单有效方法是什么

mysql - 有没有办法缩短 'greater than' 运算符(operator)条件?

php - 代码提示自定义函数/对象/常量,以及链接,Adobe Dreamweaver CS5 中的注释

可变参数的 C++ 重载运算符逗号

C++,()运算符重载,它的工作是什么

php - 多个长并发 MySQL 查询

PHP - 一个返回由其他函数回显的内容的函数

php - 将货币格式的字符串转换为 float