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. - Описывать их ещё раз не вижу смысла. Приведу только их перечень:
/* Унаследованные свойства */
Информация копипастерам
Внимание! Копирование контента с сайта, возможно только с разрешения администратора. Т.е. Меня! Я скорее всего разрешу Вам это сделать, в обмен на живую ссылку, на статью оригинал.