正确使用??操作者

时间:2016-06-08 00:15:19

标签: php php-7

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

我已经看过新的''运算符并已开始验证这样的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的看法。有一个专门用于基本验证帖子参数的页面是不是很糟糕? (它不会验证实际数据,只是它数据)。我还想知道我是否应该将ajax.php拆分成试图将其拆分的路线?你会考虑做像

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

然后可以返回已处理的值,或者如果丢失则抛出异常/死亡,或者您希望每行都有一个参数?

1 个答案:

答案 0 :(得分:3)

这只是Intellij的一个小故障。我对PHPStorm 10也是一样的。你可以轻松地测试这个,以证明你的代码有效正如你所期望的那样,这是布丁的证据,而不是一些IDE碰巧(miss-)解析它。

如果您觉得有帮助,也许可以使用JetBrains提票?

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