gpt4 book ai didi

PHP:是否有空合并运算符的反面?

转载 作者:行者123 更新时间:2023-12-03 18:04:50 25 4
gpt4 key购买 nike

我经常遇到变量可以是object的情况或 null .

当我将数据放入数据库时​​,我必须坚持这样的事情:

// @var User|null $user
$data['id_user'] = $user!==null ? $user->getId() : null;

有没有办法缩短这个?我知道 ?? ,但这有点相反。

我正在使用 PHP 7.1。

最佳答案

从 PHP 8 开始,有 nullsafe operator ?-> .有了它,你可以像这样重构你的代码:

// @var User|null $user
$data['id_user'] = $user?->getId();
在 PHP 8 之前,您可以利用自动 bool 转换来利用以下事实: when converting to bool, null is considered false ,但其他对象不是(除了显然从空标签创建的 SimpleXML 对象也被认为是假的)。因此,您可以将示例缩短为以下内容:
// @var User|null $user
$data['id_user'] = $user ? $user->getId() : null;
但是,这可能不太可读,因为 ?可能对某些人来说,您开始使用 bool 来工作,或者它可能使读者不得不考虑如何将 null 转换为 bool。您的原始代码更明确,因此可能更具可读性。为了让大脑不那么辛苦,我经常至少考虑尽可能避免使用“不等于”,而直接使用“等于”。因此,您可以将代码重构为如下所示:
// @var User|null $user
$data['id_user'] = $user === null ? null : $user->getId();
在这种特殊情况下,我认为这个技巧(避免“不等于”)效果很好,但有时与直觉相反,代码仍然更自然地可读,无论如何只使用“不等于”。

关于PHP:是否有空合并运算符的反面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54257931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com