39 votes

Différence entre ob_clean et ob_flush ?

Quelle est la différence entre ob_clean() et ob_flush() ?

Aussi, quelle est la différence entre ob_end_clean() et ob_end_flush() ? Je sais ob_get_clean() et ob_get_flush() récupèrent le contenu et mettent fin à la mise en mémoire tampon de la sortie.

59voto

Adam Wagner Points 7232

Le site *_clean ne font que vider le tampon, tandis que les variantes *_flush impriment ce qui se trouve dans le tampon (envoient le contenu dans le tampon de sortie).

Exemple :

ob_start();
print "foo";      // This never prints because ob_end_clean just empties
ob_end_clean();   //    the buffer and never prints or returns anything.

ob_start();
print "bar";      // This IS printed, but just not right here.
ob_end_flush();   // It's printed here, because ob_end_flush "prints" what's in
                  // the buffer, rather than returning it
                  //     (unlike the ob_get_* functions)

2voto

Arun Gangula Points 23

La différence essentielle est la suivante *_clean() rejette les modifications et *_flush() les sorties vers le navigateur.

Utilisation de ob_end_clean()

il est surtout utilisé lorsque vous voulez avoir un morceau de html et que vous ne voulez pas l'envoyer au navigateur tout de suite, mais il pourrait être utilisé à l'avenir.

Eg.

ob_start()
echo "<some html chunk>";
$htmlIntermediateData = ob_get_contents();
ob_end_clean();

{{some more business logic}}

ob_start();
echo "<some html chunk>";
$someMoreCode = ob_get_content();
ob_end_clean();

renderTogether($htmlIntermediateCode, $someMoreCode);

où comme ob_end_flush() sera rendu deux fois, une fois pour chacun.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X