Start · Sprachen · PHP · Referenz · constant

constant

Funktion

Gibt den Wert einer Konstante zurück, deren Name als String übergeben wird.

seit PHP 4.0.0 Kategorie: misc

Signatur

constant(string $name): mixed

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

Typ
mixed
Beschreibung
Gibt den Wert der angegebenen Konstante zurück. Existiert die Konstante nicht, wird ein 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;
}
100 MAX_BENUTZER = 100 MIN_BENUTZER = 1

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;
}
Status 'AKTIV' hat den Wert: 1

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.";
}
8.4.0

// 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.