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().