有没有办法使用某种 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/