PHP三元运算符(?)用于函数?

use*_*034 0 php function operators ternary-operator

我想做一些非常简单的事情:

if (getStatus()) {
    require_once('a.php');
} else {
    require_once('b.php');
}

function getStatus() {
    return true; //For the sake of this demo
}
Run Code Online (Sandbox Code Playgroud)

如何使用三元运算符重写?

我假设这样的事情:

getStatus() ? require_once('a.php') : require_once('b.php');
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚语法.我见过的所有例子都用它来做某事.例如x = y ? a : b;,但我不想以这种方式使用它.

我想做什么甚至可能吗?

更复杂:

这也可以用三元形式表达吗?

if (websiteIsLive()) {
    setcookie("token", x, 0, '/', $_SERVER['HTTP_HOST'], true);
} else {
    setcookie("token", y, 0, '/');
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 5

与任何其他运算符一样,三元运算符的参数必须是表达式.require_once是PHP语法,它不是函数,因此不能在表达式中使用.所以你应该在参数中使用三元运算符require_once,这是一个表达式.

require_once (getStatus() ? 'a.php' : 'b.php');
Run Code Online (Sandbox Code Playgroud)

为了您的额外要求,您可以用三元运算符做到这一点,但结果并不漂亮,恕我直言难度比原来的理解:

call_user_func_array('setcookie', 
    websiteIsLive() ? 
        array("token", x, 0, '/', $_SERVER['HTTP_HOST'], true) :
        array("token", y, 0, '/'));
Run Code Online (Sandbox Code Playgroud)