Подтвердить что ты не робот

Разница между ob_clean и ob_flush?

Какая разница между ob_clean() и ob_flush()?

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

4b9b3361

Ответ 1

Варианты *_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 printed here, because ob_end_flush "prints" what in
                  // the buffer, rather than returning it
                  //     (unlike the ob_get_* functions)

Ответ 2

Основное отличие заключается в том, что *_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() будет отображаться дважды, по одному для каждого.