为什么我得到 Undefined 属性: stdClass:: with php 8 nullsafe operator
Why am I getting Undefined property: stdClass:: with php 8 nullsafe operator
Php 8.0 引入了 nullsafe 运算符,可以像这样使用 $foo?->bar?->baz;
。
我在 php 8.1 上有一个代码示例 运行,它抛出错误 Undefined property: stdClass::$first_name
,即使它使用的是 nullsafe 运算符:
$reference = (object) $reference; // Cast of array to object
return [
'FirstName' => $reference?->first_name,
];
要解决错误,我必须使用空合并运算符:
$reference = (object) $reference; // Cast of array to object
return [
'FirstName' => $reference->first_name ?? null,
];
为什么 nullsafe 运算符在这种情况下抛出错误?
你似乎对 nullsafe 运算符的作用有点误解。
如果 $reference
是 null
,那么 $reference?->first_name
将 return null
没有警告,但由于 $reference
实际上是一个对象, ?->
就像一个普通的对象运算符,因此出现未定义的 属性 警告。
Php 8.0 引入了 nullsafe 运算符,可以像这样使用 $foo?->bar?->baz;
。
我在 php 8.1 上有一个代码示例 运行,它抛出错误 Undefined property: stdClass::$first_name
,即使它使用的是 nullsafe 运算符:
$reference = (object) $reference; // Cast of array to object
return [
'FirstName' => $reference?->first_name,
];
要解决错误,我必须使用空合并运算符:
$reference = (object) $reference; // Cast of array to object
return [
'FirstName' => $reference->first_name ?? null,
];
为什么 nullsafe 运算符在这种情况下抛出错误?
你似乎对 nullsafe 运算符的作用有点误解。
如果 $reference
是 null
,那么 $reference?->first_name
将 return null
没有警告,但由于 $reference
实际上是一个对象, ?->
就像一个普通的对象运算符,因此出现未定义的 属性 警告。