Php 8.0引入了nullsafe运算符,可以这样使用:$foo?->bar?->baz;
。
我有一个在php 8.1上运行的代码示例,即使使用了nullsafe运算符,仍会抛出错误Undefined property: stdClass::$first_name
:
$reference = (object) $reference; // Cast of array to object
return [
'FirstName' => $reference?->first_name,
];
为了解决这个错误,我必须使用null合并运算符:
$reference = (object) $reference; // Cast of array to object
return [
'FirstName' => $reference->first_name ?? null,
];
为什么在这种情况下,nullsafe运算符会抛出错误?
null
时,此运算符才会发挥作用。如果设置了$exists
对象,但没有maybe
属性,则$exists->maybe
将产生与问题所询问的空安全运算符并不真正有用的相同问题。如果maybe
属性存在,但可能具有空值,则可以在其后使用空安全运算符以防止尝试读取also_maybe
或之后链接的任何其他内容时出现警告。如果您不知道链中的第一个属性是否存在,则最好使用??
。 - Don't Panic