Еще в ноябре 2005 года на встрече в Париже разработчики обсудили новые возможности следующей, шестой, версии PHP. Интересует ли Вас, какой будет эта версия? Примите участие в опросе, который проводится на сайте рассылки.
[опрос на английском языке: PHP 6: Are you interesting in? (PHP 6: Вы зантересованы?) - YES (ДА) - NO (НЕТ)]
PHP 5 для начинающих
"Переменные" функции
Аннотация
Вызов функции с помощью переменной.
В ряде случаев бывает необходимо организовать вызов той или иной функции в зависимости от значения определенной переменной. Эта задача может быть выполнена с помощью одной из условных контрольных структур.
switch ($action) {
case 'foo':
foo();
break;
case 'bar':
bar();
break;
default:
default();
}
Однако, такое решение выглядит довольно неуклюжим, особенно, с ростом числа возможных значений переменной и вызываемых функций. К тому же, при добавлении новых функций такую структуру пришлось бы каждый раз дописывать.
К счастью, PHP поддерживает концепцию так называемых "переменных" функций (variable functions). Это значит, что, встретив переменную с примыкающими круглыми скобками, PHP пытается вызвать и исполнить функцию с именем, совпадающим со значением переменной.
function foo()
{
print 'Foo';
}
$action = 'foo';
$action(); // equivalent to foo()
Foo
Подсказка
Безусловно, вызываемая таким образом функция должна быть определена. Чтобы избежать ошибки, можно проверять существование функции перед ее вызовом.
if (function_exists($action)) {
$action();
}
if (is_callable($action)) {
$action();
}
"Переменные" функции, подобно обычным, могут принимать аргументы.
function foo($bar = '')
{
print $bar;
}
$action = 'foo';
$action('Oops!');
Oops!
Подсказка
С аналогичной целью может быть использована и функция call_user_func().
call_user_func('foo');
call_user_func('foo', 'Oops!');
Литература
[1] PHP Manual. MehdiAchour, FriedhelmBetz, AntonyDovgal, NunoLopes, PhilipOlson, GeorgRichter,
DamienSeguy, and JakubVrana. 2006-05-26. Copyright 1997-2006 the PHP Documentation Group. http://www.php.net/manual/en/.