在PHP 8以前,如果封装的较多,我们经常出现一种情况:一个函数接受X对象,但又可能是null,此时我在使用X对象属性前,就需要对null进行判断,以免出现错误。
在对象较多时,容易出现多层嵌套判断的情况,比如:
$country = null; if ($session !== null) { $user = $session->user; if ($user !== null) { $address = $user->getAddress(); if ($address !== null) { $country = $address->country; } } }
PHP 8 以后增加了一个新语法:?->
,非常类似于PHP7里引入的??
。就是在取属性前,PHP会对对象进行判断,如果对象是null,那么就直接返回null了,不再取其属性:
$country = $session?->user?->getAddress()?->country;
上一篇:php8 Match 语法
下一篇:PHP8字符串数字弱类型比较优化