PHP中是否有“nullsafe运算符”?
有没有办法使用某种安全的导航运算符编写以下语句?
echo $data->getMyObject() != null ? $data->getMyObject()->getName() : '';
所以它看起来像这样:
echo $data->getMyObject()?->getName();
有没有办法使用某种安全的导航运算符编写以下语句?
echo $data->getMyObject() != null ? $data->getMyObject()->getName() : '';
所以它看起来像这样:
echo $data->getMyObject()?->getName();
从 PHP 8 开始,您可以使用 null safe 运算符,它与 null 合并运算符相结合,允许您编写如下代码:
echo $data->getMyObject()?->getName() ?? '';
通过使用代替运算符链被终止,结果将为 null。?->
->
“查看对象内部”的运算符被视为链的一部分。
例如,对于代码:
$string = $data?->getObject()->getName() . " after";
如果 $data 为 null,则该代码将等效于:
$string = null . " after";
由于字符串串联运算符不是“链”的一部分,因此不会短路。
不,没有。
处理这个问题的绝对最佳方法是以一种始终返回特定类型的已知,良好,已定义值的方式设计对象。
对于绝对不可能做到这一点的情况,您必须执行以下操作:
$foo = $data->getMyObject();
if ($foo) {
echo $foo->getName();
}
或者也许
echo ($foo = $data->getMyObject()) ? $foo->getName() : null;