PHP: Reflection API - ReflectionFunction

PHP: Reflection API - ReflectionFunction

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

ReflectionFunction extends ReflectionFunctionAbstract implements Reflector

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

  • 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 )

Добавить комментарий


Защитный код
Обновить



Кто на сайте
Сейчас 49 гостей онлайн