ReflectionFunction
<<<
ReflectionParameter ReflectionClass
>>>

5.10.18 Réflexion
5.10 Les classes et les objets (PHP 5)
5 Référence du langage
 Manuel PHP

Introduction
ReflectionFunction
->ReflectionParameter
ReflectionClass
ReflectionMethod
ReflectionProperty
ReflectionExtension
Extension des classes de réflexion

5.10.18.3 ReflectionParameter

La classe ReflectionParameter récupère les informations concernant les paramètres des fonctions ou des méthodes.


<?php
class ReflectionParameter implements Reflector
{
    
final private __clone()
    
public object __construct(string name)
    
public string __toString()
    
public static string export()
    
public string getName()
    
public bool isPassedByReference()
    
public ReflectionClass getClass()
    
public bool allowsNull()
    
public bool isOptional()
    
public bool isDefaultValueAvailable()
    
public mixed getDefaultValue()
}
?>
Note

getDefaultValue , isDefaultValueAvailable et isOptional ont été ajoutés en PHP 5.1.0.

Pour connaître le fonctionnement des paramètres d'une fonction, vous devez tout d'abord créer une instance de la classe ReflectionFunction ou ReflectionMethod et ainsi, utiliser leurs méthodes getparameters pour récupérer un tableau de paramètres.

Utilisation de la classe ReflectionParameter

<?php
function foo($a, $b, $c) { }
function
bar(Exception $a, &$b, $c) { }
function
baz(ReflectionFunction $a, $b = 1, $c = null) { }
function
abc() { }

// Création d'une instance de la classe Reflection_Function avec le
// paramètre fourni en ligne de commande.    
$reflect = new ReflectionFunction($argv[1]);

echo
$reflect;

foreach (
$reflect->getParameters() as $i => $param) {
    
printf(
        
"-- Paramètre #%d : %s {\n".
        
"   Classe : %s\n".
        
"   Autorise NULL : %s\n".
        
"   Passé par référence : %s\n".
        
"   Est optionnel ?: %s\n".
        
"}\n",
        
$i,
        
$param->getName(),
        
var_export($param->getClass(), 1),
        
var_export($param->allowsNull(), 1),
        
var_export($param->isPassedByReference(), 1),
        
$param->isOptional() ? 'oui' : 'non'
    
);
}
?>

<< ReflectionParameter >>
ReflectionFunction Réflexion ReflectionClass