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.
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).
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)
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.