有没有办法Nullsafe operator
在php中使用条件?
问问题
602 次
2 回答
3
PHP 7
$country = null;
if ($session !== null) {
$user = $session->user;
if ($user !== null) {
$address = $user->getAddress();
if ($address !== null) {
$country = $address->country;
}
}
}
PHP 8
$country = $session?->user?->getAddress()?->country;
您现在可以使用带有新的 nullsafe 运算符的调用链来代替 null 检查条件。当链中一个元素的求值失败时,整个链的执行中止并且整个链的求值为空。
于 2020-11-26T20:35:59.813 回答
0
Nullsafe 运算符允许您链接调用,避免检查链的每个部分是否不为空(空变量的方法或属性)。
PHP 8.0
$city = $user?->getAddress()?->city
PHP 8.0 之前
$city = null;
if($user !== null) {
$address = $user->getAddress();
if($address !== null) {
$city = $address->city;
}
}
使用null coalescing operator
(它不适用于方法):
$city = null;
if($user !== null) {
$city = $user->getAddress()->city ?? null;
}
Nullsafe operator
抑制错误:
警告:尝试在致命错误中读取 null 上的属性“city”:
未捕获的错误:在 null 上调用成员函数 getAddress()
但是它不适用于数组键:
$user['admin']?->getAddress()?->city //Warning: Trying to access array offset on value of type null
$user = [];
$user['admin']?->getAddress()?->city //Warning: Undefined array key "admin"
于 2020-11-27T22:05:55.413 回答