@
操作员有时被称为“闭嘴”操作员:它会静音
任何及所有警告和错误
相比之下
??
操作员(以及更新的
?->
操作员)手柄
一个具体案例
这个
效应
意图
和
??
接线员更清楚了。
更好的方法是在完全不需要这种情况下编写代码——例如,只在构造函数中编写的私有属性总是处于已知状态;然后,返回该值的公共方法可以返回该值,而无需额外的错误抑制。
因此,不是:
class MyClass {
public $var_value;
}
$my_obj = new MyClass;
// I might have forgotten to set the property, so coalesce it
echo $my_obj->var_value ?? '';
你可以写:
class MyClass {
private string $var_value;
public function __construct(string $var_value) {
$this->var_value = $var_value;
}
public function get_var_value() {
return $this->var_value;
}
}
$my_obj = new MyClass('hello');
// No way for this to error, so no extra handling needed
echo $my_obj->get_var_value();