拥有 C# 背景,我在访问?.
类属性时(使用实体框架关系时)总是使用运算符。
例如,如果我使用它并且状态类为空,它会抛出异常,因为我试图从空对象中获取属性。
var order = DB.Order.Find(1);
var status = order.status.text;
为了解决这个问题,我可以这样做:
var address = order.status?.text ?? "No status";
运算符将?.
在第一个 null 处中断并跳过其余的访问。
我在 PHP 中遇到了同样的情况,不得不做这样的事情:
$order = Orders::find(1);
$status = $order->status->text;
如果状态为空,它会抛出相同的异常(试图从空对象中获取属性)。
但后来我这样做了,它奏效了:
$status = $order->status->text ?? "No status";
显然,->text
如果status
为空,PHP 将跳过访问。
我创建了一个小提琴来检查这是否不仅在我的环境中,而且令人惊讶的是它工作得很好!
<?php
$j = "Hello!";
echo $a->b->c->d->e ?? $a->b->c->d ?? $a->b->c ?? $a->b ?? $j;
<<“你好!”
这真的是??
PHP 中运算符的预期行为吗?因为我没有在文档中看到这一点。