PHP: Reflection API — ReflectionFunction

PHP: Reflection API

Класс ReflectionFunction предоставляет методы для работы с функциями языка и функциями, определёнными пользователем в коде, а так же с параметрами этих функций.

ReflectionFunction extends ReflectionFunctionAbstract implementsReflector

/* Константы */

  • const integer IS_DEPRECATED = 262144 ;

/* Свойства */

  • $ReflectionFunction->name

/* Методы */

ReflectionParameter::__construct ( mixed $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}"

}

public static string ReflectionFunction::export ( string $name [, bool $return ] )

Экспорт отражения функции. Первый аргумент — строка имя функции, или замыкание, второй параметр 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 ]

  }

}

public bool ReflectionFunction::isDisabled ( void )

Проверка — разрешена ли функция ( — бывает хостеры гады запрещают некоторые функции к использованию, вот и можно проверить).

Остальные методы налогичны методам класса ReflectionMethod. Они, даже наследуют один и тот же класс: ReflectionFunctionAbstract. — Описывать их ещё раз не вижу смысла. Приведу только их перечень:

public Closure ReflectionFunction::getClosure ( void )
public mixed ReflectionFunction::invoke ([ mixed $parameter [, mixed $… ]] )
public mixed ReflectionFunction::invokeArgs ( array $args )

/* Унаследованные свойства */

public object ReflectionFunctionAbstract::getClosureThis ( void )
public string ReflectionFunctionAbstract::getDocComment ( void )
public int ReflectionFunctionAbstract::getEndLine ( void )
public ReflectionExtension ReflectionFunctionAbstract::getExtension ( void )
public string ReflectionFunctionAbstract::getExtensionName ( void )
public string ReflectionFunctionAbstract::getFileName ( void )
public string ReflectionFunctionAbstract::getName ( void )
public string ReflectionFunctionAbstract::getNamespaceName ( void )
public int ReflectionFunctionAbstract::getNumberOfParameters ( void )
public int ReflectionFunctionAbstract::getNumberOfRequiredParameters ( void )
public array ReflectionFunctionAbstract::getParameters ( void )
public string ReflectionFunctionAbstract::getShortName ( void )
public int ReflectionFunctionAbstract::getStartLine ( void )
public array ReflectionFunctionAbstract::getStaticVariables ( void )
public bool ReflectionFunctionAbstract::inNamespace ( void )
public bool ReflectionFunctionAbstract::isClosure ( void )
public bool ReflectionFunctionAbstract::isDeprecated ( void )
public bool ReflectionFunctionAbstract::isInternal ( void )
public bool ReflectionFunctionAbstract::isUserDefined ( void )
public bool ReflectionFunctionAbstract::returnsReference ( void )

 

Возможно Вас заинтересуют эти материалы

PHP: Reflection API — ReflectionExtension

Класс ReflectionExtension предоставляет методы для работы с расширениями языка. Эта заметка последняя в цикле о

PHP: Reflection API — ReflectionParameter

Класс ReflectionParameter предоставляет методы для работы с параметрами методов классов, а так же с параметрами

PHP: Reflection API — ReflectionMethod

Класс ReflectionMethod предоставляет методы для работы с... методами классов. Мы можем: получить информацию модифицировать доступ,