ГЛАВА 4. Функции
Функции-переменные
Одной из интересных возможностей РНР являются функции-переменные(variable functions), то есть динамические вызовы функций, имена которых определяются во время выполнения программы. Хотя в большинстве web-приложений можно обойтись и без функций-переменных, они значительно сокращают объем и сложность программного кода, а также часто снимают необходимость в условных командах if.
Вызов функции-переменной представляет собой имя переменной, за которым следует пара круглых скобок. В круглых скобках могут перечисляться параметры(однако присутствие параметров не обязательно). Обобщенный синтаксис функции-переменной:
$имя_функции();
Следующая программа(листинг 4.6) демонстрирует эту непривычную, но полезную возможность. Допустим, программа выводит разную информацию в зависимости от языка, выбранного пользователем. В нашем примере для простоты используются приветственные сообщения для англо- и италоязычных пользователей. Алгоритм на псевдокоде:
- Создать сообщение для итальянского языка в функции с именем italian.
- Создать сообщение для английского языка в функции с именем english.
- Передать информацию о выбранном языке в сценарий, присвоив значение переменной $language.
Переменная $language используется для выполнения функции-переменной(в приведенном примере — italian()).
Листинг 4.6. Выбор функции в зависимости от пользовательского ввода
// Приветствие на итальянском языке,
function italian() {
print "Benvenuti al PHP Recipes.";
}
// Приветствие на английском языке
function english() {
print "Welcome to PHP Recipes.";
}
// Выбрать итальянский язык
$language = "italian";
// Выполнить функцию-переменную
$language();
Листинг 4.6 демонстрирует интересную концепцию функций-переменных и наглядно показывает, что функции-переменные способствуют уменьшению объема программного кода. Если бы не эта возможность, функцию пришлось бы выбирать командой if или switch; это привело бы к заметному увеличению объема программного кода и риску появления дополнительных ошибок при кодировании.
Назад |
Содержание раздела |
Общее Содержание |
Вперед
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|