ReflectionFunctionAbstract::getParameters

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

ReflectionFunctionAbstract::getParametersGets parameters

Beschreibung

public ReflectionFunctionAbstract::getParameters(): array

Get the parameters as an array of ReflectionParameter, in the order in which they are defined in the source.

Parameter-Liste

Diese Funktion besitzt keine Parameter.

Rückgabewerte

The parameters, as a ReflectionParameter object.

Siehe auch

add a note

User Contributed Notes 2 notes

up
9
dabidi at slupca dot pl
9 years ago
This is part of my private framework that uses reflection. This function get arguments list from theme method and puts corresponding vars from $_REQUEST ($_GET, $_POST, and $_COOKIE)<?phppublic static function fire_theme_method($class, $method){        $fire_args=array();                $reflection = new ReflectionMethod($class, $method);    foreach($reflection->getParameters() AS $arg)    {        if($_REQUEST[$arg->name])        $fire_args[$arg->name]=$_REQUEST[$arg->name];        else        $fire_args[$arg->name]=null;    }            return call_user_func_array(array($class, $method), $fire_args);}?>For example, if my theme method needs only id, and we get this url:http://example.com/my_class/my_method/?id=12&some_unwanted_var=123will be ignored some_unwanted_varOf course behind this i have .htaccess, autoloader and controller
up
4
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.
To Top