Необходимо вызывать различные функции в зависимости от значения переменной.
Используйте переменные переменные:
function eat_fruit($fruit) { print " chewing $fruit. "; }
$function = ' eat_fruit ';
$fruit = ' kiwi ';
$function($fruit); // вызов функции eat_fruit()
При наличии нескольких вариантов вызова следует обратиться к ассоциативному массиву имен функций:
$dispatch = array(
' add ' => ' do_add ',
' commit ' => ' do_commit ',
' checkout ' => ' do_checkout ',
' update ' => ' do_update '
);
$cmd = (isset($_REQUEST[' command ']) ? $_REQUEST[' command '] : ' ');
if (array_key_exists($cmd , $dispatch)) {
$function = $dispatch[$cmd];
$function(); // вызываем функцию
} else {
error_log(" Unknown command $cmd ");
}
Вышеприведенный код берет имя команды из запроса и выполняет эту
функцию. Обратите внимание на проверку того, что команда входит
в перечень допустимых команд. Она предохраняет код от вызова произвольной функции, переданной в запросе, такой как phpinfo(). Это делает программу более защищенной и позволяет легко регистрировать
ошибки.
Есть и еще одно преимущество – появляется возможность связать различные команды с одной и той же функцией, так что имя может быть
и длинным, и коротким:
$dispatch = array(
' add ' => ' do_add ',
' commit ' => ' do_commit ', ' ci ' => ' do_commit ',
' checkout ' => ' do_checkout ' , ' co ' => ' do_checkout ',
' update ' => ' do_update ' , ' up ' => ' do_update '
);