Разница между ob_clean и ob_flush?
Какая разница между ob_clean()
и ob_flush()
?
И какая разница между ob_end_clean()
и ob_end_flush()
? Я знаю, что ob_get_clean()
и ob_get_flush()
получают содержимое и завершают буферизацию вывода.
Ответы
Ответ 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()
будет отображаться дважды, по одному для каждого.