Please note that in PHP >= 7.0 the second argument for both var_export() functions should be boolean and not integer. Otherwise, you'll get Uncaught Exception.
(PHP 5, PHP 7, PHP 8)
ReflectionMethod::__construct — Construye un objeto ReflectionMethod
Construye un nuevo objeto de tipo ReflectionMethod.
class
Nombre de clase u objeto (instancia de la clase) a la que pertenece el método.
name
Nombre del método.
class_method
Nombre de la clase y nombre del método delimitados por ::
.
No devuelve ningún valor.
Lnaza ReflectionException si no existiera el método.
Ejemplo #1 Ejemplo de ReflectionMethod::__construct()
<?php
class Contador
{
private static $c = 0;
/**
* Incrementar contador
*
* @final
* @static
* @access public
* @return int
*/
final public static function incrementar()
{
return ++self::$c;
}
}
// Crea una instancia de la clase ReflectionMethod
$metodo = new ReflectionMethod('Contador', 'incrementar');
// Muestra información básica
printf(
"===> El método %s%s%s%s%s%s%s '%s' (que es %s)\n" .
" declarado en %s\n" .
" líneas %d a %d\n" .
" con los modificadores %d[%s]\n",
$metodo->isInternal() ? 'interno' : 'definido por el usuario',
$metodo->isAbstract() ? ' abstract' : '',
$metodo->isFinal() ? ' final' : '',
$metodo->isPublic() ? ' public' : '',
$metodo->isPrivate() ? ' private' : '',
$metodo->isProtected() ? ' protected' : '',
$metodo->isStatic() ? ' static' : '',
$metodo->getName(),
$metodo->isConstructor() ? 'un constructor' : 'un método regular',
$metodo->getFileName(),
$metodo->getStartLine(),
$metodo->getEndline(),
$metodo->getModifiers(),
implode(' ', Reflection::getModifierNames($metodo->getModifiers()))
);
// Mostrar comentarios de documentación
printf("---> Documentación:\n %s\n", var_export($metodo->getDocComment(), 1));
// Si existieran, mostrar variables estáticas
if ($statics= $metodo->getStaticVariables()) {
printf("---> Variables estáticas: %s\n", var_export($statics, 1));
}
// Invocación del método
printf("---> Resultado de la invocación: ");
var_dump($metodo->invoke(NULL));
?>
El resultado del ejemplo sería algo similar a:
===> El método definido por el usuario final public static 'incrementar' (que es un método regular) declared in /Users/philip/cvs/phpdoc/test.php líneas 14 a 17 con los modificadores 261[final public static] ---> Documentación: '/** * Incrementar contador * * @final * @static * @access public * @return int */' ---> Resultado de la invocación: int(1)
Please note that in PHP >= 7.0 the second argument for both var_export() functions should be boolean and not integer. Otherwise, you'll get Uncaught Exception.