ReflectionParameter::getType

(PHP 7, PHP 8)

ReflectionParameter::getTypeObtiene el tipo del parámetro

Descripción

public ReflectionParameter::getType(): ?ReflectionType

Obtiene el tipo asociado de un parámetro.

Parámetros

Esta función no tiene parámetros.

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 resultado del ejemplo sería:

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

Salida 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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top