Clase ReflectionFunction

(PHP 5, PHP 7, PHP 8)

Introducción

La ReflectionFunction muestra información sobre una función.

Sinopsis de la Clase

class ReflectionFunction extends ReflectionFunctionAbstract implements Reflector {
/* Constantes */
const integer IS_DEPRECATED = 262144;
/* Propiedades */
public $name;
/* Métodos */
public __construct(mixed $name)
public static export(string $name, string $return = ?): string
public invoke(mixed $... = ?): mixed
public invokeArgs(array $args): mixed
public isAnonymous(): bool
public isDisabled(): bool
public __toString(): string
/* Métodos heredados */
}

Propiedades

name

Nombre de la función. De sólo lectura, lanza una ReflectionException en el intento de escribir.

Constantes predefinidas

Modificadores ReflectionFunction

ReflectionFunction::IS_DEPRECATED

Indica las funciones obsoletas.

Tabla de contenidos

add a note

User Contributed Notes 2 notes

up
3
a dot lucassilvadeoliveira at gmail dot com
4 years ago
We can use this functionality to automatically pass arguments to our function based on some data structure.NOTE: I am using a php 8.0> feature called "Nameds parameter"<?php$valuesToProcess = [  'name' => 'Anderson Lucas Silva de Oliveira',  'age' => 21,  'hobbie' => 'Play games'];function processUserData($name, $age, $job = "", $hobbie = ""){    $msg = "Hello $name. You have $age years old";    if (!empty($job)) {    $msg .= ". Your job is $job";    }    if (!empty($hobbie)) {        $msg .= ". Your hobbie is $hobbie";    }    echo $msg . ".";}$refFunction = new ReflectionFunction('processUserData');$parameters = $refFunction->getParameters();$validParameters = [];foreach ($parameters as $parameter) {    if (!array_key_exists($parameter->getName(), $valuesToProcess) && !$parameter->isOptional()) {        throw new DomainException('Cannot resolve the parameter' . $parameter->getName());    }    if(!array_key_exists($parameter->getName(), $valuesToProcess)) {        continue;    }    $validParameters[$parameter->getName()] = $valuesToProcess[$parameter->getName()];}$refFunction->invoke(...$validParameters);?>Results in:Hello Anderson Lucas Silva de Oliveira. You have 21 years old. Your hobbie is Play games.
up
0
Lorenz R.S.
13 years ago
Here is a concise example of ReflectionFunction usage for Parameter Reflection / introspection (e.g. to automatically generate API descriptions)<?php$properties = $reflector->getProperties();$refFunc = new ReflectionFunction('preg_replace');foreach( $refFunc->getParameters() as $param ){    //invokes ■ReflectionParameter::__toString    print $param;}?>prints:Parameter #0 [ <required> $regex ]Parameter #1 [ <required> $replace ]Parameter #2 [ <required> $subject ]Parameter #3 [ <optional> $limit ]Parameter #4 [ <optional> &$count ]
To Top