(PHP 4, PHP 5, PHP 7, PHP 8)
ob_start — Activa el temporizador de salida
$callback = null, int $chunk_size = 0, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS): boolEsta función activa el almacenamiento en búfer de la salida. Cuando el almacenamiento en búfer está activo, ninguna salida es enviada desde el script; en su lugar, la salida se almacena en un búfer interno. Consulte ¿Qué salida está bufferizada? para saber exactamente qué salidas están afectadas.
Los búferes de salida son apilables, es decir ob_start() puede ser llamada mientras otro búfer está activo. Si varios búferes de salida están activos, la salida es filtrada secuencialmente a través de cada uno de ellos en el orden de anidación. Consulte Anidamiento de búferes de salida para más detalles.
Consulte Búferes de salida a nivel de usuario para una descripción detallada de los búferes de salida.
callback
Un callback callable opcional puede ser
especificado. También puede ser omitido pasando null.
callback es invocado cuando el búfer de salida es
vaciado (enviado), limpiado, o cuando el búfer de salida es vaciado
al final del script.
La firma del callback es la siguiente:
bufferContenido del buffer de salida.
phase
Máscara de bits de las constantes
PHP_OUTPUT_HANDLER_*
.
Consulte Flags pasados a los gestores de salida
para más detalles.
Si callback devuelve false,
el contenido del búfer es enviado.
Consulte Valores de retorno de los gestores de salida
para más detalles.
Llamar a alguna de las siguientes funciones desde un manejador de salida provocará un error fatal: ob_clean(), ob_end_clean(), ob_end_flush(), ob_flush(), ob_get_clean(), ob_get_flush(), ob_start().
Consulte Gestores de salida
y Trabajar con los gestores de salida
para más detalles sobre los callbacks (manejadores de salida).
chunk_size
Si el parámetro opcional chunk_size es pasado,
el búfer se vaciará después de cualquier bloque de código que produzca salida
que haga que la longitud del búfer sea igual
o superior a chunk_size.
El valor por omisión 0 significa
que toda la salida es almacenada en búfer hasta que el búfer sea desactivado.
Un valor de 1 significa que el búfer se vaciará
después de cada operación de salida, desactivando efectivamente el almacenamiento en búfer.
chunk_size también determina el tamaño inicial del
búfer reportado por ob_get_status():
16384 bytes cuando es 0, y
chunk_size redondeado al siguiente múltiplo de
4096 en caso contrario.
Consulte Tamaño del búfer para más detalles.
flags
El parámetro flags es una máscara que controla
las operaciones que pueden ser realizadas sobre el búfer de salida.
Por omisión, permite que el búfer de salida sea limpiado, enviado
y eliminado, lo cual puede ser definido explícitamente con los
indicadores de control del búfer
.
Consulte Operaciones permitidas en los búferes
para más detalles.
Cada flag controla el acceso a un conjunto de funciones, tal como se describe a continuación:
| Constante | Funciones |
|---|---|
PHP_OUTPUT_HANDLER_CLEANABLE |
ob_clean(), |
PHP_OUTPUT_HANDLER_FLUSHABLE |
ob_flush(), |
PHP_OUTPUT_HANDLER_REMOVABLE |
ob_end_clean(), ob_end_flush() y ob_get_clean(). ob_get_flush(). |
Nota:
Antes de PHP 8.4.0, el parámetro flags podía definir los flags de estado del manejador de salida también.
| Versión | Descripción |
|---|---|
| 8.5.0 | Intentar producir salida (por ejemplo con echo) dentro de la retrollamada del manejador de salida de usuario ahora está obsoleto. La advertencia de obsolescencia evita el manejador y se emite directamente. |
Ejemplo #1 Ejemplo de manejo de salida con función de devolución de llamada
<?php
function handler($buffer)
{
// reemplaza todas las patatas por zanahorias
return (str_replace("patatas", "zanahorias", $buffer));
}
ob_start("handler");
?>
<html>
<body>
<p>Es como comparar patatas y zanahorias.</p>
</body>
</html>
<?php
ob_end_flush();
?>El ejemplo anterior mostrará:
<html> <body> <p>Es como comparar zanahorias y zanahorias.</p> </body> </html>
Ejemplo #2 Crea un búfer de salida no eliminable
<?php
ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_REMOVABLE);
?>