Использование функции в switch
в порядке: функция будет вызвана и вернет значение, которое будет использоваться для случая.
Это точно так же, как писать:
$my_var = function_foo($bar,$bar2);
switch ($my_var) {
// ...
}
Даже если я предпочитаю использовать переменную, код легче читать.
И использование переменных в case
- это то, что вы не часто видите; но тоже отлично работает; -)
Цитирование Страница справочника switch
:
Выражение case может быть любым
выражение, которое оценивается в простой
тип, то есть целое число или
числа и строки с плавающей точкой.
Итак, ваш код будет работать, пока $fu
и $fubar
содержат значения простого типа.
Использование переменной в качестве значения case
не часто делается (насколько я могу судить из кода, который я прочитал) , вероятно, потому что некоторые другие языки не допускают этого (например, C этого не позволяет, а структура switch
/ case
заимствована из C) ; но это работает:
$a = 1;
$b = 2;
switch (1) {
case $a: echo 'a'; break;
case $b: echo 'b'; break;
}
Будет выводить:
a