PHP Conference China 2020

La clase ReflectionParameter

(PHP 5, PHP 7)


La clase ReflectionParameter recupera información sobre los parámetros de la función o del método.

Para hacer la introspección a los parámetros de la función, primero se crea una instancia de ReflectionFunction o de ReflectionMethod, y entonces se utiliza su método ReflectionFunctionAbstract::getParameters() para obtener un array de los parámetros.

Sinopsis de la Clase

ReflectionParameter implements Reflector {
/* Propiedades */
public $name ;
/* Métodos */
public allowsNull ( void ) : bool
public canBePassedByValue ( void ) : bool
final private __clone ( void ) : void
public __construct ( callable $function , mixed $parameter )
public static export ( string $function , string $parameter [, bool $return ] ) : string
public getClass ( void ) : ReflectionClass
public getDefaultValue ( void ) : mixed
public getDefaultValueConstantName ( void ) : string
public getName ( void ) : string
public getPosition ( void ) : int
public getType ( void ) : ReflectionType
public hasType ( void ) : bool
public isArray ( void ) : bool
public isCallable ( void ) : bool
public isDefaultValueAvailable ( void ) : bool
public isDefaultValueConstant ( void ) : bool
public isOptional ( void ) : bool
public isPassedByReference ( void ) : bool
public isVariadic ( void ) : bool
public __toString ( void ) : string



Nombre de el parámetro. De sólo lectura, lanza una ReflectionException en el intento de escribir.

Tabla de contenidos

add a note add a note

User Contributed Notes 3 notes

fgm at riff dot org
12 years ago
The note about the signature of the ReflectionParameter constructor is actually incomplete, at least in 5.2.5: it is possible to use an integer for the second parameter, and the constructor will use it to return the n-th parameter.

This allows you to obtain proper ReflectionParameter objects even when documenting code from extensions which (strangely enough) define several parameters with the same name. The string-based constructor always returns the first parameter with the matching name, whereas the integer-based constructor correctly returns the n-th parameter.

So, in short, this works:
// supposing the extension defined something like:
// Some_Class::someMethod($a, $x, $y, $x, $y)
$p = new ReflectionParameter(array('Some_Class', 'someMethod'), 4);
// returns the last parameter, whereas
$p = new ReflectionParameter(array('Some_Class', 'someMethod'), 'y');
// always returns the first $y at position 2
killgecNOFSPAM at gmail dot com
13 years ago
Signature of constructor of ReflectionParameter correctly is:

public function __construct(array/string $function, string $name);

where $function is either a name of a global function, or a class/method name pair.
massimo at mmware dot it
13 years ago
I found these limitations using class ReflectionParameter from ReflectionFunction with INTERNAL FUNCTIONS (eg print_r, str_replace, ... ) :

1. parameter names don't match with manual: (try example 19.35 with arg "call_user_func" )
2. some functions (eg PCRE function, preg_match etc) have EMPTY parameter names
3. calling getDefaultValue on Parameters will result in Exception "Cannot determine default value for internal functions"
To Top