ReflectionFunction will not work on class methods - instance or static. That is,
<?php
class A {
function B() {}
static function C() {}
}
new ReflectionFunction("A::B"); // throws "does not exist" ReflectionException
new ReflectionFunction("A::C"); // ditto
?>
The array syntax for method callbacks does not work either but throws a warning instead (__construct wants a string, not an array).
Since I don't know ahead of time whether something is a function or a class method, I have this:
<?php
function ReflectionFunctionFactory($callback) {
if (is_array($callback)) {
// must be a class method
list($class, $method) = $callback;
return new ReflectionMethod($class, $method);
}
// class::method syntax
if (is_string($callback) && strpos($callback, "::") !== false) {
list($class, $method) = explode("::", $callback);
return new ReflectionMethod($class, $method);
}
// objects as functions (PHP 5.3+)
if (version_compare(PHP_VERSION, "5.3.0", ">=") && method_exists($callback, "__invoke")) {
return new ReflectionMethod($callback, "__invoke");
}
// assume it's a function
return new ReflectionFunction($callback);
}
?>
The ReflectionFunction class
Introducción
The ReflectionFunction class reports information about a function.
Parent class ReflectionFunctionAbstract has the same methods except invoke(), invokeArgs(), export() and isDisabled().
Clases sinopsis
/* Constantes */
/* Propiedades */
public
$name
;
/* Métodos */
__construct
( mixed $name
)
/* Métodos heredados */
}Propiedades
- name
-
Prop description
Constantes predefinidas
ReflectionFunction Node Types
- ReflectionFunction::IS_DEPRECATED
-
Description here...
Table of Contents
- ReflectionFunction::__construct — Constructs a ReflectionFunction object
- ReflectionFunction::export — Exports function
- ReflectionFunction::invoke — Invokes function
- ReflectionFunction::invokeArgs — Invokes function args
- ReflectionFunction::isDisabled — Checks if function is disabled
- ReflectionFunction::__toString — To string
uramihsayibok, gmail, com
24-Oct-2010 10:00
