Skip to main content

Was ist die PHP Reflection API?

Die PHP Reflection API ist eine eingebaute PHP-Funktionalität, um Metainformationen zu Klassen, Methoden, Properties, Funktionen und Parametern zur Laufzeit auszulesen und zu untersuchen. Sie können etwa herausfinden, welche Argumente ein Konstruktor erwartet oder welche Attribute an einer Methode hängen — ohne den Quellcode zu ändern. Laravel nutzt die Reflection API intern in Illuminate/Container/Container.php intensiv, um automatische Auflösung im DI-Container, das Auslesen von PHP-Attributen und Method-Injection zu realisieren.

Wichtige Klassen

ReflectionClass — Klasseninformationen ermitteln

ReflectionParameter — Konstruktor-Argumente untersuchen

Der Laravel-Container und die Reflection API

Der IoC-Container von Laravel implementiert Konstruktor-Injection (automatische Auflösung von Abhängigkeiten) über die Reflection API. So funktioniert app()->make(SomeClass::class) und die Dependency Injection.

Die build()-Methode des Containers (vereinfacht)

Die tatsächliche build()-Methode in Container.php sieht in etwa so aus:
Util::getParameterClassName() extrahiert den Typnamen aus dem Ergebnis von $parameter->getType(). Es umhüllt den von ReflectionParameter::getType() gelieferten ReflectionNamedType bequemer.

PHP-Attribute auslesen

Ab PHP 8.0 lassen sich Attribute an Klassen, Methoden und Properties über die Reflection API auslesen. Laravel verarbeitet damit Queue- und Eloquent-Attribute.
Für den Einsatz von PHP-Attributen in Laravel siehe auch PHP-Attribute.

Grundmuster zum Auslesen von Attributen

Wie Laravel Queue-Attribute liest (vereinfacht)

Method-Attribute auslesen

Anwendungsbeispiele in der Paketentwicklung

Prüfen, welche Interfaces eine Klasse implementiert

In einem Paket können Sie dynamisch feststellen, ob eine Klasse ein bestimmtes Interface implementiert.

Metadaten sammeln — Routen automatisch per Attribut registrieren

Ein Muster, in dem Attribute und Reflection kombiniert werden, um Routen automatisch einzusammeln.

Dynamische Methodenaufrufe — Method-Injection

Laravels call()-Methode löst Argumente per Reflection auf. So lässt sich derselbe Mechanismus in einem Paket bauen.

Standardwerte von Properties einsammeln

Muster, um Defaults aus einer Config-Klasse per Reflection zu extrahieren.

Performance-Überlegungen

Die Reflection API parst Klasseninformationen jedes Mal neu, was Kosten verursacht. In Produktionscode empfiehlt es sich, Ergebnisse zu cachen.
PHP OPcache cacht keine Reflection-Ergebnisse. Wenn Sie viele Klassen in einer Schleife untersuchen, sollten Sie eigenes Caching einbauen. Der Laravel-Container selbst wiederverwendet innerhalb desselben Requests bereits ReflectionClass-Instanzen.

Nächste Schritte

PHP-Attribute

Details zum Auslesen von PHP-Attributen mit ReflectionClass::getAttributes().

Paketentwicklung

Wie Sie Laravel-Pakete mithilfe der Reflection API entwickeln.
Zuletzt geändert am 13. Juli 2026