If 语句带有一个等号和两个问号 - PHP

If statement With One equals sign and Two Question Marks - PHP

刚刚查看了 Symfony 4 中的 index.php 页面。只是想知道是否有人可以阐明这意味着什么?

if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) {
    Request::setTrustedHosts([$trustedHosts]);
}

我认为这等同于以下但不确定谢谢。

if(isset( $_SERVER['TRUSTED_HOSTS'] )){

   $trustedHosts = $_SERVER['TRUSTED_HOSTS'];
   Request::setTrustedHosts([$trustedHosts]);
  
}

相当于:

$trustedHosts = isset($_SERVER['TRUSTED_HOSTS']) ? $trustedHosts : false;
if ($trustedHosts) {
    Request::setTrustedHosts([$trustedHosts]);
}

不同之处在于,您的重写仅在设置 $_SERVER['TRUSTED_HOSTS'] 时设置 $trustedHosts。但实际代码总是设置变量,如果未设置 $_SERVER 元素,则为其赋予默认值。