Signatur
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
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;
}
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);
// 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.