
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.
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
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 ;
} 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
Negar /.env no nginx parece resolvido até alguém pedir /wp-content/uploads/.env ou backup.sql. As regras que testei e os furos que…
O Search Console marca suas páginas 2, 3 e 4 como alternativas da página 1? Ajuste a tag canônica do…
Um módulo de terceiro plantou um banner no topo da loja e você não quer desinstalar nada: tire o bloco…
Importou o banco de produção e o site pula para o domínio antigo? Rode o UPDATE em core_config_data, limpe o…
Seu catch trata pedido inexistente e banco fora do ar do mesmo jeito. Veja como criar exceção customizada em PHP…
O form do admin salva mas abre em branco na edição: veja o getData() indexado pelo id da entidade e…
Ver comentários
Eu posso estar utilizando ob_start() dentro de outro ob_start()?
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