(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
ob_list_handlers — Lista los gestores de salida utilizados
Esta función no contiene ningún parámetro.
Devuelve un array con el gestor de salida en uso (si existe).
   Si output_buffering está activado
   y no se ha definido ningún output_handler,
   o si no se ha pasado ninguna función de retorno o null a ob_start(),
   se devuelve "default output handler".
   Activar output_buffering
   y definir un output_handler
   equivale a pasar
   una función interna (integrada)
   a ob_start().
  
   Si se ha pasado un callable a ob_start(),
   se devuelve el nombre completamente cualificado
   del callable.
   Si el callable es un objeto que implementa
   __invoke(),
   se devuelve el nombre completamente cualificado
   del método __invoke() del objeto.
   Si el callable es una Closure,
   se devuelve "Closure::__invoke".
  
Ejemplo #1 Ejemplo con ob_list_handlers()
<?php
// uso de output_buffering=On, sin output_handler definido
var_dump(ob_list_handlers());
ob_end_flush();
// ningún retorno o null
ob_start();
var_dump(ob_list_handlers());
// Función anónima
ob_start(function($string) { return $string; });
var_dump(ob_list_handlers());
ob_end_flush();
// función flecha
ob_start(fn($string) => $string);
var_dump(ob_list_handlers());
ob_end_flush();
// callable de primera clase
$firstClassCallable = userDefinedFunction(...);
ob_start([$firstClassCallable, '__invoke']);
var_dump(ob_list_handlers());
ob_end_flush();
// función interna (integrada)
ob_start('print_r');
var_dump(ob_list_handlers());
ob_end_flush();
// función definida por el usuario
function userDefinedFunction($string, $flags) { return $string; };
ob_start('userDefinedFunction');
var_dump(ob_list_handlers());
ob_end_flush();
class MyClass {
    public static function staticHandle($string) {
        return $string;
    }
    public static function handle($string) {
        return $string;
    }
    public function __invoke($string) {
        return $string;
    }
}
// clase y método estático
ob_start(['MyClass','staticHandle']);
var_dump(ob_list_handlers());
ob_end_flush();
// objeto y método no estático
ob_start([new MyClass,'handle']);
var_dump(ob_list_handlers());
ob_end_flush();
// objeto invocable
ob_start(new MyClass);
var_dump(ob_list_handlers());
ob_end_flush();
?>El ejemplo anterior mostrará:
array(1) {
  [0]=>
  string(22) "default output handler"
}
array(1) {
  [0]=>
  string(22) "default output handler"
}
array(1) {
  [0]=>
  string(7) "print_r"
}
array(1) {
  [0]=>
  string(19) "userDefinedFunction"
}
array(1) {
  [0]=>
  string(17) "Closure::__invoke"
}
array(1) {
  [0]=>
  string(17) "Closure::__invoke"
}
array(1) {
  [0]=>
  string(17) "Closure::__invoke"
}
array(1) {
  [0]=>
  string(21) "MyClass::staticHandle"
}
array(1) {
  [0]=>
  string(15) "MyClass::handle"
}
array(1) {
  [0]=>
  string(17) "MyClass::__invoke"
}
