Introduction
<<<
ReflectionFunction ReflectionParameter
>>>

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.2 ReflectionFunction

La classe ReflectionFunction vous permet de faire du reverse-engineer sur les fonctions.


<?php
class ReflectionFunction implements Reflector
{
    
final private __clone()
    
public object __construct(string name)
    
public string __toString()
    
public static string export()
    
public string getName()
    
public bool isInternal()
    
public bool isUserDefined()
    
public string getFileName()
    
public int getStartLine()
    
public int getEndLine()
    
public string getDocComment()
    
public array getStaticVariables()
    
public mixed invoke(mixed* args)
    
public mixed invokeArgs(array args)
    
public bool returnsReference()
    
public ReflectionParameter[] getParameters()
    
public int getNumberOfParameters()
    
public int getNumberOfRequiredParameters()
}
?>
Note

invokeArgs a été ajouté en PHP 5.1.0.

Pour connaître le fonctionnement d'une fonction, vous devez tout d'abord créer une instance de la classe ReflectionFunction . Ainsi, vous pouvez appeler n'importe quelle méthode de cette instance.

Utilisation de la classe ReflectionFunction

<?php
/**
* Un simple compteur
*
* @return    int
*/
function counter()
{
    static
$c = 0;

    return
$c++;
}

// Création d'une instance de la classe Reflection_Function
$func = new ReflectionFunction('counter');

// Affichage d'informations basiques
printf(
    
"===> The %s function '%s'\n".
    
"     declared in %s\n".
    
"     lines %d to %d\n",
    
$func->isInternal() ? 'internal' : 'user-defined',
    
$func->getName(),
    
$func->getFileName(),
    
$func->getStartLine(),
    
$func->getEndline()
);

// Affichage du commentaire de la documentation
printf("---> Documentation:\n %s\n", var_export($func->getDocComment(), 1));

// Affichage des variables statiques si elles existent
if ($statics = $func->getStaticVariables())
{
    
printf("---> Variables statiques : %s\n", var_export($statics, 1));
}

// Appel de la fonction
printf("---> Invocation des résultats dans : ");
var_dump($func->invoke());


// vous pouvez préférer utiliser la méthode export()
echo "\nRésultat de ReflectionFunction::export() :\n";
echo
ReflectionFunction::export('counter');
?>
Note

La méthode invoke accepte un nombre variable d'arguments passés à la fonction, tout comme la fonction call_user_func .

<< ReflectionFunction >>
Introduction Réflexion ReflectionParameter