web-dev-qa-db-fra.com

Différence entre ob_clean et ob_flush?

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

Quelle est également la différence entre ob_end_clean() et ob_end_flush()? Je sais que ob_get_clean() et ob_get_flush() obtiennent tous les deux le contenu et la mise en mémoire tampon de sortie.

36
Alex V

les *_clean les variantes vident simplement le tampon, tandis que *_flush les fonctions affichent le contenu du tampon (envoient le contenu au 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)
54
Adam Wagner

La principale différence est que *_clean() rejette les modifications et que *_flush() renvoie au navigateur.

tilisation de ob_end_clean()

il est principalement utilisé lorsque vous souhaitez avoir un morceau de code html et que vous ne souhaitez pas sortir immédiatement vers le navigateur, mais qu'il pourra être utilisé à l'avenir.

Par exemple.

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ù as ob_end_flush() sera rendu deux fois, une fois pour chacun.

0
Arun Gangula