Руководство по PHP
Пред. | Глава 17. Функции | След.

# Обращение к функциям через переменные

PHP поддерживает концепцию переменных функций. Это означает, что если к имени переменной присоединены круглые скобки, PHP ищет функцию с тем же именем, что и результат вычисления переменной, и пытается ее выполнить. Эту возможность можно использовать для реализации обратных вызовов, таблиц функций и множества других вещей.

Переменные функции не будут работать с такими языковыми конструкциями как echo(), print(), unset(), isset(), empty(), include(), require() и другими подобными им операторами. Вам необходимо реализовывать свою функцию-обертку (wrapper) для того, чтобы приведенные выше конструкции могли работать с переменными функциями.

Пример 17-13. Работа с функциями посредством переменных

`<?php function foo() { echo "In foo()<br />\n"; } function bar($arg = '') { echo "In bar(); argument was '$arg'.<br />\n"; } // Функция-обертка для echo function echoit($string) { echo $string; } $func = 'foo'; $func(); // Вызывает функцию foo() $func = 'bar'; $func('test'); // Вызывает функцию bar() $func = 'echoit'; $func('test'); // Вызыывет функцию echoit() ?>`

Вы также можете вызвать методы объекта, используя возможности PHP для работы с переменными функциями.

Пример 17-14. Обращение к методам класса посредством переменных

`<?php class Foo { function Variable() { $name = 'Bar'; $this->$name(); // Вызываем метод Bar() } function Bar() { echo "This is Bar"; } } $foo = new Foo(); $funcname = "Variable"; $foo->$funcname(); // Обращаемся к $foo->Variable() ?>`

Смотрите также call_user_func(), Переменные переменные и function_exists().

Пред. | Начало | След.
Возврат значений | Уровень выше | Встроенные функции