|
Последние активные темы форума |
|
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().
|