Изучаем PHP программирование

   Search   

Русская версия | English version   

Скрипты :: Секреты профессионалов :: Link :: FAQ   Пишите письма  



 

главная :: основы PHP

Функции-переменные

   Одной из интересных возможностей РНР являются функции-переменные (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; это привело бы к заметному увеличению объема программного кода и риску появления дополнительных ошибок при кодировании.

Designed by Fedin
All right reserved
2003-2004
Hosted by uCoz