(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
ob_list_handlers — Lista los gestores de salida utilizados
Esta función no tiene parámetros.
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 resultado del ejemplo sería:
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" }