Signatur
Beschreibung
constant() ermöglicht es, den Wert einer Konstante dynamisch abzurufen, wenn der Name der Konstante erst zur Laufzeit bekannt ist. Im Gegensatz zum direkten Verwenden einer Konstante per Namen erlaubt diese Funktion, den Konstantennamen aus Variablen, Konfigurationsdaten oder externen Quellen zu konstruieren.
Typische Anwendungsfälle sind Situationen, in denen ein Konstantenname in einer Datenbank, Konfigurationsdatei oder als Funktionsparameter übergeben wird und dynamisch aufgelöst werden soll. Die Funktion funktioniert sowohl mit regulären Konstanten (definiert via define() oder const) als auch mit Klassen-/Interface-Konstanten, wenn der vollständig qualifizierte Name angegeben wird (z. B. 'MeineKlasse::MEINE_KONSTANTE').
Wenn die angegebene Konstante nicht existiert, erzeugt constant() einen Fehler der Stufe E_WARNING und gibt null zurück. Vor dem Aufruf sollte daher mit defined() geprüft werden, ob die Konstante existiert, sofern ihr Vorhandensein nicht garantiert ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $name Pflicht | string | Der Name der Konstante als Zeichenkette. Für Klassenkonstanten den vollständig qualifizierten Namen verwenden, z. B. 'MeineKlasse::KONSTANTE'. |
Rückgabewert
E_WARNING ausgelöst und null zurückgegeben.Beispiele
Dynamisches Abrufen einer einfachen Konstante
<?php
define('MAX_BENUTZER', 100);
define('MIN_BENUTZER', 1);
$konstantenname = 'MAX_BENUTZER';
// Wert dynamisch abrufen
$wert = constant($konstantenname);
echo $wert; // Ausgabe: 100
// Schleife über mehrere Konstantennamen
$namen = ['MAX_BENUTZER', 'MIN_BENUTZER'];
foreach ($namen as $name) {
echo $name . ' = ' . constant($name) . PHP_EOL;
}
Klassenkonstante dynamisch auflesen
<?php
class Status {
const AKTIV = 1;
const INAKTIV = 0;
const GESPERRT = -1;
}
$statusName = 'AKTIV';
$konstantenname = 'Status::' . $statusName;
if (defined($konstantenname)) {
$wert = constant($konstantenname);
echo "Status '$statusName' hat den Wert: $wert" . PHP_EOL;
} else {
echo "Konstante '$konstantenname' existiert nicht." . PHP_EOL;
}
Sicherer Einsatz mit defined()
<?php
define('APP_VERSION', '8.4.0');
$gesucht = 'APP_VERSION';
if (defined($gesucht)) {
echo constant($gesucht); // Ausgabe: 8.4.0
} else {
echo "Konstante nicht definiert.";
}
// Wichtig · Fallstricke
Fallstrick: Wird eine nicht existierende Konstante übergeben, erzeugt constant() einen E_WARNING-Fehler. Um dies zu vermeiden, vor dem Aufruf immer defined() verwenden.
Sicherheit: Wenn der Konstantenname aus Benutzereingaben stammt, muss dieser zwingend validiert werden, bevor er an constant() übergeben wird, um unerwünschtes Auslesen von Konfigurationskonstanten (z. B. Datenbankkennwörter) zu verhindern.
Für statisch bekannte Konstantennamen sollte direkt die Konstante verwendet werden (z. B. MAX_BENUTZER statt constant('MAX_BENUTZER')), da dies performanter und lesbarer ist.