PHP

Utilizando ob_start(), ob_end_flush(), ob_get_contents() no PHP

Você já deve ter visto as funções ob_start(), ob_end_flush() entre outras “ob_”, apreenda neste post para que servem e como você pode estar utilizando as funções de controle de saída no seu projeto.

Primeiro, “ob_” vem de Output Buffer, ou buffer de saída.

Explicando de uma forma bem resumida essas funções irão te auxiliar a controlar e manipular  os dados que são enviados para o navegador.

Tanto em um “echo”, como em um “include”, você será capaz de salvar esse conteúdo em uma variável antes de “reenviá-las” para o navegador.

Exemplo de utilização

Vamos para um exemplo bem simples, utilizando “echo”.

ob_start();

echo "Teste 1";

echo "Teste 2";

$conteudo = ob_get_contents();

ob_end_clean();

Com a função ob_start() eu inicio o “buffer” para salvar os dados que serão enviados.

Já com a função ob_get_contents() eu retorno para minha variável o conteúdo que foi capturado, já a função ob_end_clean() irá limpar o buffer e cancelar a saída de dados.

Você também pode utilizar a função ob_clean() que irá apenas limpar o buffer sem cancelar a saída dos dados

Segundo exemplo de utilização

Exemplo abaixo é bem útil para manipular Templates com o PHP.

<?php

ob_start();

?>
<div>
    <span>texto de teste</span>
    <div>texto de teste</div>
    <a href="#">teste</a>
</div>
<?php

$content = ob_get_clean();

var_dump( $content );

?>

Você pode utilizar as funções de controle de saída com includes, requires, file_get_contents.

ob_start();

include("template.php");

$content = ob_get_clean();

var_dump( $content );

Repare que no código acima estou utilizando a função ob_get_clean() que além de retornar o conteúdo da saída irá limpar o buffer.

Exemplo com função para manipular templates.

function getTemplateContent($nome_template) {
    ob_start();
    include $nome_template;
    $temp = ob_get_contents();
    ob_end_clean();
    return $temp ;
}

Conclusão

As funções de controle de saída serão muito uteis para você desenvolver sistemas mais complexos e organizados.

Conheça todas as funções disponíveis para Controle de Saída neste link: Funções para Control de Saída

 

 

Resumo
Nome do Artigo
Funções de controle de saída no PHP
Descrição
Como controlar e manipular "output buffer" gerado pelo PHP
Autor
Editor
Roger Mauricio Takemiya
Logo do Editor

Ver comentários

    • Olá, sim é totalmente possível,
      Buffers de saída são empilháveis, ou seja, você pode utilizar ob_start() enquanto outro ob_start() estiver ativo.

  • Roger você pode me ajudar por favor? está ocorrendo seguinte erro no sistema que no qual estou prestando manutenção:
    Fatal error: ob_start() : Cannot use output buffering in output buffering display handlers in ...
    O que pode ser?

    • João, traduzindo o erro você não pode utilizar uma função de buffer entre o ob_start e ob_end, você conseguiria passar mais detalhes? Dá uma lida neste material: Você não deve chamar funções que utilizam o buffer de saída como print_r(...) ou highlight_file(...) de dentro da função callback -
      http://php.net/ob_start

Post Recentes

YouTube sem cookie: adiar o embed do vídeo e do Maps até o aceite

Seu banner de consentimento está certo, mas o vídeo incorporado grava cookie de terceiro no primeiro carregamento. Troque o domínio…

7 horas atrás

Custom post type dando 404: flush_rewrite_rules na ativação do plugin

A listagem do custom post type abre e o single dá 404 no WordPress 6.9. Entenda o cache das rewrite…

2 dias atrás

systemd timer no lugar do cron: agendar script com log e sem execução dupla

Um par .service e .timer substitui a linha do crontab com log no journal, execução perdida recuperada no boot e…

2 dias atrás

Descrição em massa no WooCommerce: wp eval-file lendo a lista de SKUs

400 produtos importados do fornecedor com a aba Descrição vazia. Um wp eval-file percorre os SKUs sem texto, grava pelo…

2 dias atrás

Frete grátis no WooCommerce: esconder as outras opções de entrega

Some com PAC e SEDEX da lista quando o frete grátis está disponível, usando woocommerce_package_rates, e limpe o cache de…

3 dias atrás

Erro HTTP no WordPress ao enviar imagem para a biblioteca de mídia

A barra de upload chega no fim e o WordPress devolve só "Erro HTTP". Separe as três causas: Imagick barrado…

3 dias atrás