Start · Sprachen · PHP · Referenz · get_error_handler

get_error_handler

Funktion

Gibt den aktuell registrierten benutzerdefinierten Error-Handler zurück, der zuvor mit <code>set_error_handler()</code> gesetzt wurde.

seit PHP 8.4.0 Kategorie: error

Signatur

get_error_handler(): ?callable

Beschreibung

get_error_handler() liefert den Error-Handler, der aktuell für die Fehlerbehandlung in PHP registriert ist. Dies ist der Callback, der zuletzt erfolgreich über set_error_handler() gesetzt wurde. Wurde kein benutzerdefinierter Handler gesetzt oder wurde der Handler auf null zurückgesetzt, gibt die Funktion null zurück.

Die Funktion ist nützlich, wenn man den aktuellen Handler temporär ersetzen, später aber wiederherstellen möchte – etwa in Bibliotheken oder Frameworks, die eigene Fehlerbehandlungsroutinen einrichten und den vorherigen Zustand nach ihrer Ausführung wiederherstellen wollen.

Im Gegensatz zu set_error_handler(), das den vorherigen Handler zurückgibt, erlaubt get_error_handler() das Abfragen des aktuellen Handlers zu einem beliebigen Zeitpunkt, ohne ihn zu verändern. Dies erleichtert Introspektions- und Debugging-Szenarien erheblich.

Rückgabewert

Typ
?callable
Beschreibung
Gibt den aktuell registrierten benutzerdefinierten Error-Handler als callable zurück. Wenn kein benutzerdefinierter Handler gesetzt ist oder dieser auf null zurückgesetzt wurde, wird null zurückgegeben.

Beispiele

Aktuellen Error-Handler abfragen

<?php
function meinErrorHandler(int $errno, string $errstr): bool {
    echo "Fehler [{$errno}]: {$errstr}" . PHP_EOL;
    return true;
}

set_error_handler('meinErrorHandler');

$handler = get_error_handler();

if ($handler !== null) {
    echo 'Aktueller Handler: ';
    var_dump($handler);
} else {
    echo 'Kein benutzerdefinierter Handler aktiv.' . PHP_EOL;
}
Aktueller Handler: string(16) "meinErrorHandler"

Handler temporär ersetzen und wiederherstellen

<?php
function originalHandler(int $errno, string $errstr): bool {
    echo "Original-Handler: [{$errno}] {$errstr}" . PHP_EOL;
    return true;
}

function temporaererHandler(int $errno, string $errstr): bool {
    echo "Temporaerer Handler: [{$errno}] {$errstr}" . PHP_EOL;
    return true;
}

set_error_handler('originalHandler');

// Aktuellen Handler sichern
$vorheriger = get_error_handler();

// Temporär ersetzen
set_error_handler('temporaererHandler');
trigger_error('Testfehler im temporären Handler', E_USER_NOTICE);

// Ursprünglichen Handler wiederherstellen
set_error_handler($vorheriger);
trigger_error('Testfehler nach Wiederherstellung', E_USER_NOTICE);
Temporaerer Handler: [1024] Testfehler im temporären Handler Original-Handler: [1024] Testfehler nach Wiederherstellung

// Wichtig · Fallstricke

Verfügbarkeit: get_error_handler() wurde mit PHP 8.4.0 eingeführt. In älteren PHP-Versionen existiert diese Funktion nicht. Als Workaround konnte man bisher den Rückgabewert von set_error_handler() nutzen, der den jeweils vorherigen Handler zurückliefert.

Hinweis: Wenn der Error-Handler über restore_error_handler() zurückgesetzt wird, zeigt get_error_handler() anschließend wieder den zuvor aktiven Handler an – oder null, falls der Stack leer ist.