ReflectionFunctionAbstract::getParameters
(PHP 5)
ReflectionFunctionAbstract::getParameters — Получает аргументы
Описание
public array ReflectionFunctionAbstract::getParameters
( void
)
Получение аргументов в виде массива объектов ReflectionParameter.
Внимание
К настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов.
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Аргументы, представленные объектами ReflectionParameter.
Смотрите также
- ReflectionFunctionAbstract::getNumberOfParameters() - Получает количество аргументов
- func_get_args() - Возвращает массив, содержащий аргументы функции
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения, относящиеся к переменным и типам
- Reflection
- Функция ReflectionFunctionAbstract::__clone() - Копирующий конструктор
- Функция ReflectionFunctionAbstract::getClosureScopeClass() - Returns the scope associated to the closure
- Функция ReflectionFunctionAbstract::getClosureThis() - Возвращает указатель this замыкания
- Функция ReflectionFunctionAbstract::getDocComment() - Получает документируемый комментарий
- Функция ReflectionFunctionAbstract::getEndLine() - Получает номер строки завершения описания функции
- Функция ReflectionFunctionAbstract::getExtension() - Получает информацию о расширении
- Функция ReflectionFunctionAbstract::getExtensionName() - Получение имени расширения
- Функция ReflectionFunctionAbstract::getFileName() - Получает имя файла
- Функция ReflectionFunctionAbstract::getName() - Получает имя функции
- Функция ReflectionFunctionAbstract::getNamespaceName() - Получение имени пространства имен
- Функция ReflectionFunctionAbstract::getNumberOfParameters() - Получает количество аргументов
- Функция ReflectionFunctionAbstract::getNumberOfRequiredParameters() - Получает количество обязательных аргументов
- Функция ReflectionFunctionAbstract::getParameters() - Получает аргументы
- ReflectionFunctionAbstract::getReturnType
- Функция ReflectionFunctionAbstract::getShortName() - Получает короткое имя функции
- Функция ReflectionFunctionAbstract::getStartLine() - Получает начальный номер строки
- Функция ReflectionFunctionAbstract::getStaticVariables() - Получает статические переменные
- ReflectionFunctionAbstract::hasReturnType
- Функция ReflectionFunctionAbstract::inNamespace() - Проверяет, находится ли функция в пространстве имен
- Функция ReflectionFunctionAbstract::isClosure() - Проверяет, является ли функция замыканием
- Функция ReflectionFunctionAbstract::isDeprecated() - Проверяет, является ли функция устаревшей
- Функция ReflectionFunctionAbstract::isGenerator() - Returns whether this function is a generator
- Функция ReflectionFunctionAbstract::isInternal() - Проверяет, является ли функция внутренней
- Функция ReflectionFunctionAbstract::isUserDefined() - Проверяет, является ли функция определенной пользователем
- ReflectionFunctionAbstract::isVariadic
- Функция ReflectionFunctionAbstract::returnsReference() - Проверяет, что функция возвращает ссылку
- Функция ReflectionFunctionAbstract::__toString() - Преобразование в строку
Коментарии
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)
<?php
public 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=123
will be ignored some_unwanted_var
Of course behind this i have .htaccess, autoloader and controller
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.