Obtém o tipo de um parâmetro

# ReflectionParameter::getType

(PHP 7, PHP 8)

ReflectionParameter::getType — Obtém o tipo de um parâmetro

### Descrição

public function ReflectionParameter::getType(): ?ReflectionType

Obtém o tipo associado de um parâmetro.

### Parâmetros

Esta função não possui parâmetros.

### Valor Retornado

Retorna um objeto ReflectionType se um tipo de parâmetro for especificado, `null` caso contrário.

### Exemplos

Exemplo #1 ReflectionParameter::getType() Uso a partir do PHP 7.1.0

A partir do PHP 7.1.0, ReflectionType::__toString() foi descontinuado e ReflectionParameter::getType() pode retornar uma instância de ReflectionNamedType. Para obter o nome do tipo de parâmetro, ReflectionNamedType() está disponível neste caso.

    <?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);
    ?>

O exemplo acima produzirá:

    int
    NULL

Exemplo #2 ReflectionParameter::getType() Uso antes do 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);
    ?>

Saída do exemplo acima no PHP 7.0:

    int
    NULL

Exemplo #3 ReflectionParameter::getType() Uso no PHP 8.0.0 e posterior

A partir do PHP 8.0.0, este método pode retornar uma instância ReflectionNamedType ou uma instância de ReflectionUnionType. Este último é uma coleção do primeiro. Para analisar um tipo, geralmente é conveniente normalizá-lo para um array de objetos ReflectionNamedType A função a seguir retornará um array de `0` ou mais de instâncias ReflectionNamedType.

    <?php
    function getAllTypes(ReflectionParameter $reflectionParameter): array
    {
        $reflectionType = $reflectionParameter->getType();

        if (!$reflectionType) return [];

        return $reflectionType instanceof ReflectionUnionType
            ? $reflectionType->getTypes()
            : [$reflectionType];
    }
    ?>

### Veja Também

- ReflectionParameter::hasType() - Verifica se o parâmetro tem um tipo
- ReflectionType::__toString() - Para string

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