ConFoo 2025

ReflectionParameter::getType

(PHP 7, PHP 8)

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

Description

public ReflectionParameter::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

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