Разница между ob_clean и ob_flush? - PullRequest
32 голосов
/ 07 января 2012

В чем разница между ob_clean() и ob_flush()?

Также в чем разница между ob_end_clean() и ob_end_flush()?Я знаю, ob_get_clean() и ob_get_flush() оба получают содержимое и буферизацию конечного вывода.

Ответы [ 2 ]

50 голосов
/ 07 января 2012

варианты *_clean просто очищают буфер, тогда как функции *_flush выводят содержимое буфера (отправляют содержимое в выходной буфер).

Пример:

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)
0 голосов
/ 28 марта 2019

Разница в ключах *_clean() отменяет изменения и *_flush() выводит в браузер.

Использование ob_end_clean()

в основном используется, когда вы хотите иметь кусок html и не хотите сразу выводить его в браузер, но это может бытьиспользуется в будущем.

Например.

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

, где ob_end_flush() будет отображаться дважды, один раз для каждого.

...