The ReflectionFunction class

(PHP 5, PHP 7, PHP 8)

Einführung

The ReflectionFunction class reports information about a function.

Klassenbeschreibung

class ReflectionFunction extends ReflectionFunctionAbstract {
/* Konstanten */
public const int IS_DEPRECATED;
/* Geerbte Eigenschaften */
public string $name;
/* Methoden */
public __construct(Closure|string $function)
public static export(string $name, string $return = ?): string
public invoke(mixed ...$args): mixed
public invokeArgs(array $args): mixed
public isAnonymous(): bool
public __toString(): string
/* Geerbte Methoden */
}

Vordefinierte Konstanten

ReflectionFunction Modifiers

ReflectionFunction::IS_DEPRECATED int

Indicates deprecated functions.

Changelog

Version Beschreibung
8.4.0 The class constants are now typed.
8.0.0 ReflectionFunction::export() was removed.

Inhaltsverzeichnis

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