Start · Sprachen · PHP · Referenz · ReflectionConstant

ReflectionConstant

Klasse

Liefert Informationen über eine global definierte Konstante und erlaubt deren Inspektion zur Laufzeit.

seit PHP 8.4.0 Kategorie: oop

Signatur

class ReflectionConstant implements Reflector

Beschreibung

ReflectionConstant ist Teil der PHP-Reflection-API und ermöglicht die Inspektion von global definierten Konstanten (z. B. mit define() oder const auf oberster Ebene). Mit dieser Klasse lassen sich zur Laufzeit Metadaten einer Konstante abfragen, darunter ihr Name, ihr Wert, ihr Namespace sowie die Datei und Zeile, in der sie definiert wurde.

Typische Einsatzgebiete sind Frameworks, Dokumentationsgeneratoren, statische Analyse-Tools und Debugging-Werkzeuge, die Konstanten programmatisch auflisten oder dokumentieren müssen. Im Gegensatz zur einfachen constant()-Funktion liefert ReflectionConstant strukturierte Metainformationen statt nur den Wert.

Zu beachten ist, dass diese Klasse ausschließlich für globale Konstanten gedacht ist. Klassenkonstanten werden über ReflectionClassConstant abgebildet. Die Klasse ist nicht instanziierbar für nicht existierende Konstanten – in diesem Fall wird eine ReflectionException geworfen.

Parameter

Name Typ Default Beschreibung
$name Pflicht string Der vollständige Name der globalen Konstante, ggf. inklusive Namespace (z. B. 'MY_CONST' oder 'MyNamespace\\MY_CONST').

Rückgabewert

Typ

Beispiele

Grundlegende Inspektion einer globalen Konstante

<?php
define('APP_VERSION', '1.0.0');

$rc = new ReflectionConstant('APP_VERSION');

echo $rc->getName();   // APP_VERSION
echo PHP_EOL;
echo $rc->getValue();  // 1.0.0
echo PHP_EOL;

// Gibt alle verfügbaren Infos aus
var_dump($rc);
APP_VERSION 1.0.0

Alle globalen Konstanten eines Namespaces auflisten

<?php
namespace MyApp;

const DB_HOST = 'localhost';
const DB_PORT = 3306;

// Zurück im globalen Kontext:
$konstanten = ['MyApp\\DB_HOST', 'MyApp\\DB_PORT'];

foreach ($konstanten as $name) {
    $rc = new \ReflectionConstant($name);
    printf(
        "Name: %-20s | Wert: %s\n",
        $rc->getName(),
        var_export($rc->getValue(), true)
    );
}
Name: MyApp\DB_HOST | Wert: 'localhost' Name: MyApp\DB_PORT | Wert: 3306

Fehlerbehandlung bei nicht existierender Konstante

<?php
try {
    $rc = new ReflectionConstant('NICHT_VORHANDEN');
} catch (ReflectionException $e) {
    echo 'Fehler: ' . $e->getMessage();
}
Fehler: Constant NICHT_VORHANDEN does not exist

// Wichtig · Fallstricke

Neu in PHP 8.4: ReflectionConstant wurde erst mit PHP 8.4.0 eingeführt. In älteren PHP-Versionen ist diese Klasse nicht verfügbar; dort muss auf get_defined_constants() zurückgegriffen werden.

Für die Inspektion von Klassenkonstanten (z. B. class Foo { const BAR = 1; }) ist ReflectionClassConstant zuständig – ReflectionConstant deckt diese Fälle nicht ab.

Die Methode getValue() gibt den tatsächlich ausgewerteten Wert der Konstante zurück. Bei Konstanten, die über Ausdrücke definiert wurden (z. B. define('X', 2 + 3)), wird der berechnete Endwert geliefert.