Obtiene el tipo del parámetro

# ReflectionParameter::getType

(PHP 7, PHP 8)

ReflectionParameter::getType — Obtiene el tipo del parámetro

### Descripción

public function ReflectionParameter::getType(): ?ReflectionType

Obtiene el tipo asociado de un parámetro.

### Parámetros

Esta función no contiene ningún parámetro.

### Valores devueltos

Devuelve un objeto ReflectionType si se especifica un tipo de parámetro, `null` en caso contrario.

### Ejemplos

Ejemplo #1 Uso de ReflectionParameter::getType() a partir de PHP 7.1.0

A partir de PHP 7.1.0, ReflectionType::__toString() está obsoleto, y ReflectionParameter::getType() puede devolver una instancia de ReflectionNamedType. Para obtener el nombre del tipo de parámetro, ReflectionNamedType() está disponible en este 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);
    ?>

El ejemplo anterior mostrará:

    int
    NULL

Ejemplo #2 Uso de ReflectionParameter::getType() anterior a 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);
    ?>

Resultado del ejemplo anterior en PHP 7.0:

    int
    NULL

Ejemplo #3 Uso de ReflectionParameter::getType() en PHP 8.0.0 y posteriores

A partir de PHP 8.0.0, este método puede devolver una instancia de ReflectionNamedType o de ReflectionUnionType. Lo siguiente es una colección del primero. Para analizar un tipo, es a menudo práctico normalizarlo en un array de objetos ReflectionNamedType. La función siguiente devolverá un array de `0` o más instancias de ReflectionNamedType

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

        if (!$reflectionType) return [];

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

### Ver también

- ReflectionParameter::hasType() - Verifica si un parámetro tiene un tipo
- ReflectionType::__toString() - Conversión a string

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