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:
<?php
// 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
?>
La classe ReflectionParameter
(PHP 5)
Introduction
La classe ReflectionParameter récupère les informations sur les paramètres des fonctions ou des méthodes.
Pour introspecter les paramètres des fonctions, tout d'abord, une instance de la classe ReflectionFunction ou de la classe ReflectionMethod est créée, puis, la méthode ReflectionFunctionAbstract::getParameters() est utilisé pour créer un tableau des paramètres.
Synopsis de la classe
Propriétés
- name
-
Nom du paramètre. En lecture seule, émets une exception de type ReflectionException si l'on tente d'y écrire.
Sommaire
- ReflectionParameter::allowsNull — Vérifie si la valeur NULL est autorisée comme valeur du paramètre
- ReflectionParameter::canBePassedByValue — Vérifie si le paramètre peut être passé par valeur
- ReflectionParameter::__clone — Clonage
- ReflectionParameter::__construct — Constructeur
- ReflectionParameter::export — Exportation
- ReflectionParameter::getClass — Récupère la classe
- ReflectionParameter::getDeclaringClass — Récupère la classe déclarante
- ReflectionParameter::getDeclaringFunction — Récupère la fonction déclarante
- ReflectionParameter::getDefaultValue — Récupère la valeur par défaut du paramètre
- ReflectionParameter::getDefaultValueConstantName — Returns the default value's constant name if default value is constant or null
- ReflectionParameter::getName — Récupère le nom du paramètre
- ReflectionParameter::getPosition — Récupère la position d'un paramètre
- ReflectionParameter::isArray — Vérifie si le paramètre attend un tableau
- ReflectionParameter::isCallable — Returns whether parameter MUST be callable
- ReflectionParameter::isDefaultValueAvailable — Vérifie si une valeur par défaut est disponible pour le paramètre
- ReflectionParameter::isDefaultValueConstant — Returns whether the default value of this parameter is constant
- ReflectionParameter::isOptional — Vérifie si le paramètre est optionnel
- ReflectionParameter::isPassedByReference — Vérifie si le paramètre est passé par référence
- ReflectionParameter::__toString — Récupère une représentation textuelle
fgm at riff dot org ¶
5 years ago
killgecNOFSPAM at gmail dot com ¶
5 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 ¶
5 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"
