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

# ReflectionParameter::getType

(PHP 7, PHP 8)

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

### Описание

public function ReflectionParameter::getType(): ?ReflectionType

Метод получает тип параметра.

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

Сигнатура функции не содержит параметров.

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

Метод возвращает объект класса 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]
        ;
    }

    ?>

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

- ReflectionParameter::hasType() - Проверяет, указали ли тип параметра
- ReflectionType::__toString() - Получает название типа параметра

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open