Вызов переменных функций

Задача
Необходимо вызывать различные функции в зависимости от значения переменной.

Решение
Используйте переменные переменные:

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'
);

Теги:
fruit, function, commit, checkout, update, dispatch, array, функции, command, команды, вызова, REQUEST, команд, входит, команда, проверку, Обратите, функцию, выполняет, перечень, Вызов, предохраняет, запросе, phpinfo, делает, программу, позволяет, легко, регистрировать , ошибки, преимущество, появляется, возможность, связать, функцией
Добавлено: 21 Июля 2018 13:35:51 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...