(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]
    ;
}
?>
