Тернарный оператор PHP (?) Использование для функций?
Я хочу сделать что-то очень простое:
if (getStatus()) {
require_once('a.php');
} else {
require_once('b.php');
}
function getStatus() {
return true; //For the sake of this demo
}
Как это можно переписать с помощью троичного оператора?
Я предполагаю что-то вроде этого:
getStatus() ? require_once('a.php') : require_once('b.php');
Но я не могу понять синтаксис. Все примеры, которые я видел, используют это для чего-то. например x = y ? a : b;
, но я не хочу использовать это таким образом.
Что я хочу сделать, даже возможно с этим?
Более сложный:
Можно ли это также выразить в троичной форме?
if (websiteIsLive()) {
setcookie("token", x, 0, '/', $_SERVER['HTTP_HOST'], true);
} else {
setcookie("token", y, 0, '/');
}
1 ответ
Аргументы троичного оператора, как и любой другой оператор, должны быть выражениями. require_once
это синтаксис PHP, это не функция, поэтому его нельзя использовать в выражении. Таким образом, вы должны использовать троичный оператор в аргументе require_once
, который является выражением.
require_once (getStatus() ? 'a.php' : 'b.php');
По вашему дополнительному запросу вы можете сделать это с помощью троичного оператора, но результат не изящный, и ИМХО сложнее понять, чем оригинал:
call_user_func_array('setcookie',
websiteIsLive() ?
array("token", x, 0, '/', $_SERVER['HTTP_HOST'], true) :
array("token", y, 0, '/'));