??的正确用法操作员

Correct usage of ?? operator

在我的项目中,我有一个 ajax.php 正在处理所有 AJAX POST 请求。它获取命令,验证所有必需的参数是否存在并将其传递给相关的 class。

我看到了新的'??'运算符并开始像这样验证 POST 参数,

$name = $_POST['name'] ?? die('{"result":0, "data":"name not provided"}');
$state = $_POST['state'] ?? die('{"result":0, "data":"state not provided"}');

我觉得比

好看
$name = isset($_POST['blah']) ? $_POST['blah'] : die('{"result":0, "data":"blah not provided"}');  

我已经部署并确认它可以正常工作,但 Intellij 在第一次使用后对无法访问的代码发出嘶嘶声。我想知道我是在滥用语法并且可能会被修复,还是 Intellij 只是不在球上。

我总是对不良做法偏执,所以想知道您对语法用法和整体的看法 ajax.php。有一个专门用于基本验证 post 参数存在的页面是不是很糟糕? (它不验证实际数据,只是它 数据)。我也想知道我是否应该将 ajax.php 拆分成一条路线来尝试拆分它?你会考虑做类似

的事情吗
foreach (['name', 'state'] AS $arg) {
  $$arg = $_POST[$arg] ?? die("{\"result\":0, \"data\":\"$arg not provided\"}");
}

然后可以 return 处理后的值,或者如果缺少则抛出 exception/die 或者您希望每行都有每个参数?

这只是 Intellij 中的一个小故障。我对 PHPStorm 10 也有同样的看法。您可以轻松地对其进行测试,以证明您的代码 可以正常工作 ,这就是布丁中的证据,而不是一些 [=21] =] 碰巧(错过)解析它。

如果您想提供帮助,也许可以向 JetBrains 提出请求?

我将把你的整个问题的第二部分保留为 - 正如我在上面的评论中指出的那样 - 它 一个单独的问题,应该相应地提出。并且可能在 Code Review 结束。如果你确实把它移到那里......确保在这里交叉参考:-)