PHP 8.1.30 Released!

ReflectionParameter::getType

(PHP 7, PHP 8)

ReflectionParameter::getTypeObtém o tipo de um parâmetro

Descrição

public 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() está depreciado 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

add a note

User Contributed Notes 1 note

up
0
Will Beaumont
4 years ago
As of 7.1, if a parameter type is found then this method returns an instance of ReflectionNamedType (https://www.php.net/manual/en/class.reflectionnamedtype.php), a subclass of ReflectionType.
To Top