PHP: Reflection API - ReflectionFunction
Класс ReflectionFunction предоставляет методы для работы с функциями языка и функциями, определёнными пользователем в коде, а так же с параметрами этих функций.
ReflectionFunction extends ReflectionFunctionAbstract implements Reflector
/* Константы */
- const integer IS_DEPRECATED = 262144 ;
/* Свойства */
- $ReflectionFunction->name
/* Методы */
Конструктор класса. Принимает один параметр - строку имя функции, или замыкание:
$foo = function( $a, $b )
{
return $a + $b;
};
function bar( $a, $b )
{
return $a + $b;
}
$func = new ReflectionFunction('bar');
$func2 = new ReflectionFunction($foo);
var_dump( $func );
var_dump( $func2 );
выведет:
object(ReflectionFunction) #2 (1) {
["name"]= > string(3)"bar"
}
object(ReflectionFunction) #3 (1) {
["name"]= > string(9)"{closure}"
}
Экспорт отражения функции. Первый аргумент - строка имя функции, или замыкание, второй параметр bool - позволяет указать, куда помещать вывод: true - вернёт результат как строку, false - выведет на экран.
В , кстати второй параметр указан как строковый - это опечатка!
$foo = function( $a, $b )
{
return $a + $b;
};
function bar( $a, $b )
{
return $a + $b;
}
ReflectionFunction::export('bar');
ReflectionFunction::export($foo);
выведет:
Function [ function bar ] {
@@ Z:\home\app.loc\www\reflection\test.php 10 - 13
- Parameters [2] {
Parameter #0 [ $a ]
Parameter #1 [ $b ]
}
}
Closure [ function {closure} ] {
@@ Z:\home\app.loc\www\reflection\test.php 5 - 8
- Parameters [2] {
Parameter #0 [ $a ]
Parameter #1 [ $b ]
}
}
Проверка - разрешена ли функция ( - бывает хостеры гады запрещают некоторые функции к использованию, вот и можно проверить).
Остальные методы налогичны методам класса ReflectionMethod. Они, даже наследуют один и тот же класс: ReflectionFunctionAbstract. - Описывать их ещё раз не вижу смысла. Приведу только их перечень:
/* Унаследованные свойства */
Информация копипастерам
Внимание! Копирование контента с сайта, возможно только с разрешения администратора. Т.е. Меня! Я скорее всего разрешу Вам это сделать, в обмен на живую ссылку, на статью оригинал.
PHP: Reflection API - ReflectionFunction
