Signatur
Beschreibung
ob_list_handlers() liefert ein indiziertes Array, das die Namen aller momentan aktiven Ausgabe-Handler enthält. Jeder Handler entspricht einem gestapelten Ausgabe-Puffer, der zuvor mit ob_start() geöffnet wurde.
Ist kein Callback-Handler registriert (d. h. ob_start() wurde ohne Argument aufgerufen), erscheint der Eintrag default output handler im Array. Benutzerdefinierte Callback-Funktionen werden mit ihrem Funktionsnamen gelistet. Interne Handler wie ob_gzhandler oder der URL-Rewriter erscheinen entsprechend mit ihrem Namen.
Die Funktion ist besonders nützlich beim Debuggen verschachtelter Ausgabe-Puffer oder wenn man sicherstellen möchte, dass bestimmte Handler aktiv sind, bevor man weitere Puffer-Operationen durchführt. Sie ermöglicht einen schnellen Überblick über den aktuellen Puffer-Stack.
Rückgabewert
'default output handler'. Das Array ist leer, wenn kein Ausgabe-Puffer aktiv ist.Beispiele
Aktive Handler ohne Callback auflisten
<?php
// Einfachen Puffer ohne Handler starten
ob_start();
$handlers = ob_list_handlers();
print_r($handlers);
ob_end_clean();
Verschachtelte Puffer mit verschiedenen Handlern inspizieren
<?php
// Ersten Puffer ohne Callback starten
ob_start();
// Zweiten Puffer mit benutzerdefiniertem Callback starten
ob_start(function(string $buffer): string {
return strtoupper($buffer);
});
// Dritten Puffer mit ob_gzhandler starten (falls verfügbar)
// ob_start('ob_gzhandler');
$handlers = ob_list_handlers();
print_r($handlers);
// Alle Puffer schließen
ob_end_clean();
ob_end_clean();
Prüfen, ob ob_gzhandler bereits aktiv ist
<?php
// Nur dann ob_gzhandler registrieren, wenn er noch nicht aktiv ist
$activeHandlers = ob_list_handlers();
if (!in_array('ob_gzhandler', $activeHandlers)) {
ob_start('ob_gzhandler');
echo "ob_gzhandler wurde gestartet.\n";
} else {
echo "ob_gzhandler ist bereits aktiv.\n";
}
print_r(ob_list_handlers());
ob_end_flush();
// Wichtig · Fallstricke
Reihenfolge der Handler: Das Array ist nach der Reihenfolge geordnet, in der die Handler gestartet wurden – der älteste Handler steht an Index 0, der zuletzt gestartete am Ende des Arrays. Diese Reihenfolge entspricht dem Puffer-Stack von außen nach innen.
Closure-Handler: Wird eine anonyme Funktion (Closure) als Handler verwendet, erscheint im Array der String Closure::__invoke, was bei mehreren Closures keine eindeutige Unterscheidung erlaubt. Benannte Funktionen sind daher bei komplexen Puffer-Szenarien vorzuziehen.
PHP-INI-Einstellungen: Der Handler URL-Rewriter kann automatisch aktiv sein, wenn url_rewriter.tags in der php.ini gesetzt ist und Session-Transparenz aktiviert wurde (session.use_trans_sid).