Отправляет email-рассылки с помощью сервиса Sendsay

PHP 5 для начинающих

  Все выпуски  

ФУНКЦИИ: "Переменные" функции


Вниманию читателей!

Отдельные выпуски рассылки в той или иной мере взаимосвязаны. С предыдущими выпусками Вы можете ознакомиться:

  1. в архиве рассылки (оригиналы выпусков);
  2. на сайте рассылки (исправленные и дополненные версии).

# # #

Вы также можете подписаться на рассылку "PHP 5: Новые возможности".

PHP 6 уже в разработке!

Еще в ноябре 2005 года на встрече в Париже разработчики обсудили новые возможности следующей, шестой, версии PHP. Интересует ли Вас, какой будет эта версия? Примите участие в опросе, который проводится на сайте рассылки.

http://pterodactyl.l2p.net/e107/

[опрос на английском языке: 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!');

Created with DocBook Created with Libxslt


В избранное