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() } ?>
|
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
.
|
|