Переменные, ссылающиеся на функции

В РНР предусмотрена возможность использования переменных, ссылаю­щихся на функции. Переменная может содержать имя функции, и функция, имя которой содержится в переменной, может быть вызвана путем использова­ния соответствующего синтаксиса. Подобным способом во время выполнения скрипта можно определять, какая именно функция будет вызвана.

Замечание

В практике существует несколько причин, по которым требуется определять имя вы­зываемой функции во время выполнения скрипта. Например, это требуется при ис­пользовании т.н. callback-функций, которые вызываются изнутри другой функции при наступлении определенного события. Другим вариантом является создание таб­лицы-селектора, которая содержит имена функций, вызываемых в зависимости от поступления тех или иных данных.

Пусть описана следующая функция:

code: #php
function apples() {
  echo "Теперь внутри apples().<BR>";
  echo "В наличии много яблок . <BR><BR>";
}

Для вызова данной функции при помощи переменной следует присвоить ей в качестве значения имя функции и потом использовать имя этой переменной как будто бы производится вызов функции:

code: #php
$function_variable = "apples";
$function_variable();

Функциям, вызываемым при помощи данного способа, можно передавать ар­гументы, при этом можно также использовать значения аргументов по умолча­нию, что и показано на пример.

code: #php
<HTML>
<HEAD>
<TITLE>Функция как значение переменной</TITLE>
</HEAD>
<BODY>
<H1>Функция как значение переменной</H1>
<?php
 
function apples() {
  echo "Теперь внутри apples().<BR>";
  echo  "В наличии много яблок. <BR><BR>";
}
 
function oranges($argument) {
  echo "$argument <BR>";
  echo "В наличии также много апельсинов . <BR><BR>" ;
}
 
function bananas($argument="") {
  echo "$argument <BR>";
  echo "В наличии большое количество бананов. <BR><BR>" ;
}
 
$function_variable = "apples";
$function_variable();
 
$function_variable = "oranges";
$function_variable("Теперь внутри oranges   ().");
 
$function_variable = "bananas";
$function_variable("Теперь внутри bananas   ().");
?>
</BODY>
</HTML>

Результат выполнения этого примера приведен на рисунке, из которого вид­но, что передача аргументов внутрь функций, вызванных при помощи перемен­ной, не составляет никакого труда.

результат выполнения примера
Книга: PHP в примерах. Купить книгу
Автор: Стивен Хольцнер. Переводчик: С. Банников
Поделиться:

Похожие статьи: