ReflectionParameter::getType

(PHP 7, PHP 8)

ReflectionParameter::getTypeRécupère le type du paramètre

Description

publicReflectionParameter::getType(): ?ReflectionType

Récupère le type associé d'un paramètre.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Retourne un objet ReflectionType si un type de paramètre est spécifié, null sinon.

Exemples

Exemple #1 Utilisation de ReflectionParameter::getType() à partir de PHP 7.1.0

À partir de PHP 7.1.0, ReflectionType::__toString() est obsolète, et ReflectionParameter::getType()peut retourner une instance de ReflectionNamedType. Pour récupérer le nom du type de paramètre, ReflectionNamedType() est disponible dans ce cas.

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

L'exemple ci-dessus va afficher :

int NULL

Exemple #2 Utilisation de ReflectionParameter::getType() antérieur à 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);
?>

Résultat de l'exemple ci-dessus en PHP 7.0 :

int NULL

Exemple #3 Utilisation de ReflectionParameter::getType() en PHP 8.0.0 et ultérieur

À partir de PHP 8.0.0, cette méthode peut retourner une instance soit de ReflectionNamedType soit de ReflectionUnionType. Le suivant est une collection du premier. Pour analyser un type, il est souvent pratique de le normaliser en un tableau d'objets ReflectionNamedType. La fonction suivant retournera un tableau de 0 ou plus d'instances de ReflectionNamedType

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

if (!
$reflectionType) return [];

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

Voir aussi

To Top