Start · Sprachen · PHP · Referenz · get_defined_constants

get_defined_constants

Funktion

Gibt ein assoziatives Array aller definierten Konstanten und ihrer Werte zurück, optional gruppiert nach Erweiterungskategorien.

seit PHP 4.1.0 Kategorie: misc

Signatur

get_defined_constants(bool $categorize = false): array

Beschreibung

get_defined_constants() liefert sämtliche Konstanten zurück, die zum Zeitpunkt des Aufrufs in der PHP-Umgebung definiert sind – sowohl built-in-Konstanten der PHP-Kern-Engine und installierten Erweiterungen als auch Konstanten, die per define() oder const im Benutzercode definiert wurden.

Wird $categorize auf true gesetzt, ist das Rückgabe-Array nicht flach, sondern in Unter-Arrays unterteilt. Jeder Schlüssel entspricht dem Namen der PHP-Erweiterung (z. B. Core, pcre, json) bzw. user für selbst definierte Konstanten. Das erleichtert die Unterscheidung zwischen systemseitigen und eigenen Konstanten erheblich.

Typische Einsatzgebiete sind Debugging, Introspection, das Erstellen von Dokumentation oder das Überprüfen, ob eine bestimmte Konstante bereits definiert wurde. Für den letztgenannten Zweck ist defined() jedoch die deutlich performantere Wahl.

Hinweis: Der Aufruf gibt einen Schnappschuss des aktuellen Zustands zurück. Konstanten, die danach per define() hinzugefügt werden, sind nicht enthalten.

Parameter

Name Typ Default Beschreibung
$categorize bool false Wenn true, werden die Konstanten nach Erweiterungszugehörigkeit gruppiert. Vom Benutzer definierte Konstanten erscheinen dann unter dem Schlüssel user.

Rückgabewert

Typ
array
Beschreibung
Ohne Kategorisierung: ein flaches assoziatives Array der Form ['KONSTANTENNAME' => Wert, ...]. Mit Kategorisierung: ein mehrdimensionales Array ['Erweiterung' => ['KONSTANTENNAME' => Wert, ...], ...].

Beispiele

Alle eigenen Konstanten auflisten

<?php
define('APP_VERSION', '2.5.0');
define('MAX_RETRIES', 3);

$constants = get_defined_constants(true);

// Nur benutzerdefinierte Konstanten ausgeben
if (isset($constants['user'])) {
    foreach ($constants['user'] as $name => $value) {
        echo $name . ' = ' . var_export($value, true) . PHP_EOL;
    }
}
APP_VERSION = '2.5.0' MAX_RETRIES = 3

Alle Konstanten einer bestimmten Erweiterung anzeigen

<?php
$constants = get_defined_constants(true);

// JSON-Erweiterungskonstanten ausgeben
$extension = 'json';
if (isset($constants[$extension])) {
    echo "Konstanten der Erweiterung '{$extension}':" . PHP_EOL;
    foreach ($constants[$extension] as $name => $value) {
        echo '  ' . $name . ' = ' . var_export($value, true) . PHP_EOL;
    }
} else {
    echo "Erweiterung '{$extension}' nicht gefunden oder hat keine Konstanten.";
}
Konstanten der Erweiterung 'json': JSON_ERROR_NONE = 0 JSON_ERROR_DEPTH = 1 JSON_ERROR_STATE_MISMATCH = 2 ...

Prüfen, ob eine Konstante bereits definiert ist (Vergleich mit defined())

<?php
define('DB_HOST', 'localhost');

// Umständlicher Weg über get_defined_constants
$all = get_defined_constants();
$exists = array_key_exists('DB_HOST', $all);
echo $exists ? 'Konstante vorhanden' : 'Nicht vorhanden';
echo PHP_EOL;

// Empfohlener, performanterer Weg
echo defined('DB_HOST') ? 'Konstante vorhanden' : 'Nicht vorhanden';
echo PHP_EOL;
Konstante vorhanden Konstante vorhanden

// Wichtig · Fallstricke

Performance: get_defined_constants() liest alle definierten Konstanten aus und erzeugt dabei ein unter Umständen sehr großes Array. Für die einfache Prüfung, ob eine einzelne Konstante definiert ist, sollte stets defined() verwendet werden.

Kategorisierung: Die Kategorienamen entsprechen den intern registrierten Erweiterungsnamen. Diese können sich zwischen PHP-Versionen ändern. Der Schlüssel user für selbst definierte Konstanten ist stabil und verlässlich.

Werte: Die Werte der Konstanten können beliebige skalare Typen sein (int, float, string, bool, null). Arrays als Konstantenwerte (ab PHP 7.0 mit const möglich) werden ebenfalls korrekt zurückgegeben.