Skip to main content

Qu’est-ce que l’API PHP Reflection

L’API PHP Reflection est une fonctionnalité intégrée à PHP permettant d’obtenir et d’inspecter à l’exécution les méta-informations des classes, méthodes, propriétés, fonctions ou paramètres. Vous pouvez ainsi vérifier les arguments du constructeur d’une classe, ou les attributs posés sur une méthode, sans modifier directement le code source. Laravel utilise abondamment l’API Reflection à l’intérieur de Illuminate/Container/Container.php pour la résolution automatique du conteneur DI, la lecture des attributs PHP ou l’injection dans les méthodes.

Classes principales

ReflectionClass — obtenir des informations sur une classe

ReflectionParameter — inspecter les arguments d’un constructeur

Conteneur Laravel et API Reflection

Le conteneur IoC de Laravel s’appuie sur l’API Reflection pour l’injection par constructeur (résolution automatique des dépendances). Comprenons le mécanisme derrière app()->make(SomeClass::class) et l’injection de dépendances.

La méthode build() du conteneur (version simplifiée)

Le vrai build() de Container.php ressemble à peu près à ceci.
Util::getParameterClassName() est un utilitaire qui extrait le nom du type sous forme de chaîne à partir du résultat de $parameter->getType(). Il enveloppe le ReflectionNamedType renvoyé par ReflectionParameter::getType() de manière plus commode.

Lire les attributs PHP

Depuis PHP 8.0, l’API Reflection permet de récupérer les attributs posés sur des classes, méthodes ou propriétés. Laravel s’en sert pour traiter les attributs de queue ou d’Eloquent.
Pour l’intégration des attributs PHP dans Laravel, voir aussi Attributs PHP.

Schéma de base pour lire un attribut

Comment Laravel lit l’attribut Queue (version simplifiée)

Lire les attributs d’une méthode

Utilisations en développement de packages

Vérifier les interfaces implémentées par une classe

Vous pouvez vérifier dynamiquement si une classe implémente une interface donnée depuis votre package.

Récupération de métadonnées — enregistrer automatiquement des routes via attributs

Un schéma combinant attributs et Reflection pour collecter automatiquement les routes.

Appel dynamique de méthode — injection de méthode

La méthode call() de Laravel utilise Reflection pour résoudre automatiquement les arguments. Voici comment implémenter le même mécanisme dans un package.

Récupérer les valeurs par défaut des propriétés

Schéma pour récupérer les valeurs par défaut d’une classe de configuration via Reflection.

Attention aux performances

L’API Reflection parse les informations de classe à chaque appel : cela a un coût. En production, la bonne pratique est de mettre les résultats en cache.
L’OPcache de PHP ne met pas en cache les résultats de Reflection. Si vous inspectez de nombreuses classes en boucle, envisagez un cache personnalisé. Notez toutefois que le conteneur Laravel réutilise déjà l’instance ReflectionClass dans la même requête.

Étapes suivantes

Attributs PHP

Découvrez en détail les attributs PHP lus via ReflectionClass::getAttributes().

Développement de packages

Découvrez comment développer un package Laravel en tirant parti de l’API Reflection.
Dernière modification le 13 juillet 2026