ReflectionParameter::getType

(PHP 7, PHP 8)

ReflectionParameter::getTypeПолучить тип параметра

Описание

public ReflectionParameter::getType ( ) : ReflectionType|null

Получить тип параметра

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает объект 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 
$reflectionType1PHP_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];
}
?>

Смотрите также

add a note add a note

User Contributed Notes 1 note

up
1
Will Beaumont
8 months ago
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.
To Top