(PHP 4, PHP 5, PHP 7, PHP 8)
ob_start — Ativa o buffer de saída
$callback
= null
, int$chunk_size
= 0, int$flags
= PHP_OUTPUT_HANDLER_STDFLAGS
): boolEsta função irá ativar o buffer de saída. Enquanto o buffer de saída estiver ativo, não é enviada a saída do script, (outros que não sejam cabeçalhos), ao invés disto a saída é guardada em um buffer interno. Consulte Que Saída é Armazenada em Buffer? sobre exatamente que saída é afetada.
Buffers de saída são empilháveis, ou seja, ob_start() pode ser chamada enquanto outro buffer estiver ativo. Se múltiplos buffers de saída estiverem ativos, a saída será filtrada sequencialmente atráves de cada uma delas na ordem de aninhamento. Consulte Aninhando Buffers de Saída para mais detalhes.
Consulte Buffers de Saída em Nível de Usuário para uma descrição detalhada de buffers de saída.
callback
Uma função callback
do tipo callable pode ser especificada. Ela também pode ser ignorada passando-se null
.
callback
é chamada quando o buffer de saída é descarregad (enviado), limpo, ou quando o buffer de saída é descarregado no final da execução do script.
A assinatura da função callback
deve ser da seguinte forma:
buffer
phase
PHP_OUTPUT_HANDLER_*
. Consulte Opções Passadas aos Manipuladores de Saída para mais detalhes. Se callback
retornar false
, o conteúdo do buffer é retornado. Consulte Valores de Retorno do Menipulador de Saída para mais detalhes.
Chamar qualquer das funções a seguir de dentro de um manipulador de saída resultará em erro fatal: ob_clean(), ob_end_clean(), ob_end_flush(), ob_flush(), ob_get_clean(), ob_get_flush() e ob_start().
Consulte Manipuladores de Saída e Trabalhando com Manipuladores de Saída para mais detalhes sobre as funções callback
(manipuladores de saída).
chunk_size
Se o parâmetro opcional chunk_size
for informado, o buffer será descarregado depois que algum bloco de código que produza saída faça com que o tamanho do buffer fique igual ou maior que chunk_size
. O valor padrão é 0
, que significa que toda a saída fica em buffer até que ele seja desligado. Consulte Tamanho do Buffer para mais detalhes.
flags
O parâmetro flags
é um bitmask que controla as operações que podem ser realizadas no buffer de saída. O padrão é permitir que o buffer de saída possa ser limpo, descarregado ou removido, o que pode ser configurado explicitamente através das opções de controle de buffer . Consulte Operações permitidas em buffers para mais detalhes.
Cada opção controla o acesso das funções, como descrito a seguir:
Constante | Funções |
---|---|
PHP_OUTPUT_HANDLER_CLEANABLE | ob_clean() |
PHP_OUTPUT_HANDLER_FLUSHABLE | ob_end_flush() |
PHP_OUTPUT_HANDLER_REMOVABLE | ob_end_clean(), ob_end_flush(), ob_get_clean() e ob_get_flush() |
Exemplo #1 Exemplo de uma função de callback
<?php
function callback($buffer)
{
// substitui apples por oranges
return (str_replace("apples", "oranges", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php
ob_end_flush();
?>
O exemplo acima produzirá:
<html> <body> <p>It's like comparing oranges to oranges.</p> </body> </html>
Exemplo #2 Criando um buffer de saída não apagável
<?php
ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_REMOVABLE);
?>