PHP 中是否有可选的链接?
2022-08-30 19:28:43
我想省略在链式语句中对 null 的检查,例如
if($a && $a->$b && $a->$b->$c){
$d = $a->$b->$c;
}
并改用可选的链式链接。
这在PHP中是可能的还是实现的?
我想省略在链式语句中对 null 的检查,例如
if($a && $a->$b && $a->$b->$c){
$d = $a->$b->$c;
}
并改用可选的链式链接。
这在PHP中是可能的还是实现的?
根据这篇文章“空合并运算符(在PHP 7中引入)是这样的表示?用于检查值是否设置或为空,或者换句话说,如果值存在而不是null,则返回第一个操作数,否则,它返回第二个操作数。
所以你可以很容易地做
$d = $a->$b->$c ?? 'DEFAULT' ;
编辑:这仅适用于属性,而不适用于方法(如下面的评论中的“hackel”所指出的那样)
直到8.0菲律宾比索。
这已经在Nullsafe运算符RFC中进行了投票和通过。
语法将为 。?->
所以声明:
if ($a && $a->$b && $a->$b->$c) {
$d = $a->$b->$c;
}
可以重写为:
$d = $a?->$b?->$c; // If you are happy to assign null to $d upon failure
艺术
if ($a?->$b?->$c) {
$d = $a->$b->$c; // If you want to keep it exactly per the previous statement
}
Nullsafe 运算符同时适用于属性和方法。