(PHP 7, PHP 8)
ReflectionParameter::getType — Obtiene el tipo del parámetro
Obtiene el tipo asociado de un parámetro.
Esta función no tiene parámetros.
Devuelve un objeto ReflectionType si se especifica un tipo de
parámetro, null
en caso contrario.
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];
}
?>