As of 7.1, if a parameter type is found then this method returns an instance of ReflectionNamedType (https://www.php.net/manual/en/class.reflectionnamedtype.php), a subclass of ReflectionType.
(PHP 7, PHP 8)
ReflectionParameter::getType — Получить тип параметра
У этой функции нет параметров.
Возвращает объект ReflectionType, если тип параметра задан,
null
, в противном случае.
Пример #1 Пример использования ReflectionParameter::getType() начиная с PHP 7.1.0
Начиная с PHP 7.1.0, метод ReflectionType::__toString() объявлен устаревшим. Метод ReflectionParameter::getType() может возвратить экземпляр ReflectionNamedType. Для получения имени типа параметра доступен метод ReflectionNamedType().
<?php
function someFunction(int $param, $param2) {}
$reflectionFunc = new ReflectionFunction('someFunction');
$reflectionParams = $reflectionFunc->getParameters();
$reflectionType1 = $reflectionParams[0]->getType();
$reflectionType2 = $reflectionParams[1]->getType();
assert($reflectionType1 instanceof ReflectionNamedType);
echo $reflectionType1->getName(), PHP_EOL;
var_dump($reflectionType2);
?>
Результат выполнения приведённого примера:
int NULL
Пример #2 Использование ReflectionParameter::getType() в PHP до версии 7.1.0
<?php
function someFunction(int $param, $param2) {}
$reflectionFunc = new ReflectionFunction('someFunction');
$reflectionParams = $reflectionFunc->getParameters();
$reflectionType1 = $reflectionParams[0]->getType();
$reflectionType2 = $reflectionParams[1]->getType();
echo $reflectionType1, PHP_EOL;
var_dump($reflectionType2);
?>
Результат выполнения приведённого примера в PHP 7.0:
int NULL
Пример #3 Пример использования ReflectionParameter::getType() в PHP 8.0.0 и более поздних
Начиная с PHP 8.0.0, этот метод может возвращать экземпляр ReflectionNamedType
или экземпляр ReflectionUnionType.
Последний представляет собой коллекцию первых.
Для анализа типа часто бывает удобно преобразовать его в массив объектов ReflectionNamedType.
Следующая функция вернёт массив из 0
или более экземпляров ReflectionNamedType.
<?php
function getAllTypes(ReflectionParameter $reflectionParameter): array
{
$reflectionType = $reflectionParameter->getType();
if (!$reflectionType) return [];
return $reflectionType instanceof ReflectionUnionType
? $reflectionType->getTypes()
: [$reflectionType];
}
?>
As of 7.1, if a parameter type is found then this method returns an instance of ReflectionNamedType (https://www.php.net/manual/en/class.reflectionnamedtype.php), a subclass of ReflectionType.