(PHP 4, PHP 5, PHP 7, PHP 8)
ob_start — Включает буферизацию вывода
$callback
= null
, int$chunk_size
= 0, int$flags
= PHP_OUTPUT_HANDLER_STDFLAGS
): boolФункция включает буферизацию вывода. Пока буферизация вывода активна, вывод из скрипта не отправляется, вместо этого вывод сохраняется во внутреннем буфере. В разделе «Какой вывод буферизуется?» рассказано, на какой именно вывод это влияет.
Буферы вывода помещаются в стек, поэтому функцию ob_start() разрешено вызывать, пока активен другой буфер. Если активировано несколько буферов вывода, вывод фильтруется последовательно через каждый из них в порядке вложенности. Подробнее об этом рассказано в разделе «Вложенные буферы вывода».
Подробное описание буферов вывода дано в разделе «Пользовательские буферы вывода».
callback
Можно задать необязательный параметр callback
(callable). Чтобы обойти его, передают значение null
.
Параметр callback
вызывается, когда буфер вывода сбрасывается (отправляется), очищается или когда буфер вывода сбрасывается в конце скрипта.
Сигнатура callback
-функции:
buffer
phase
PHP_OUTPUT_HANDLER_*
. Подробнее о флагах рассказано в разделе «Флаги, передаваемые обработчикам вывода». Если параметр callback
вернёт false
, возвращается содержимое буфера. Подробнее об этом рассказано в разделе «Возвращаемые значения обработчика вывода».
Вызов любой из следующих функций из обработчика вывода выдаст фатальную ошибку: ob_clean(), ob_end_clean(), ob_end_flush(), ob_flush(), ob_get_clean(), ob_get_flush(), ob_start().
Подробнее о callback
-функциях (обработчиках вывода) рассказано в разделах «Обработчики вывода» и «Работа с обработчиками вывода».
chunk_size
Если передан необязательный параметр chunk_size
, буфер будет сброшен после каждого блока кода, размер буфера которого достиг или превысил значение параметра chunk_size
. Значение по умолчанию 0
означает, что вывод буферизуется до тех пор, пока буфер не будет выключен. Подробнее об этом рассказано в разделе «Размер буфера».
flags
Параметр flags
— это битовая маска, которая управляет операциями, выполняемыми с буфером вывода. По умолчанию разрешены очистка, сброс и удаление буферов вывода, что разрешено устанавливать явно через флаги управления буфером . Подробнее об этом рассказано в разделе «Операции, разрешённые для буферов».
Каждый флаг управляет доступом к набору функций, как описано ниже:
Константа | Функции |
---|---|
PHP_OUTPUT_HANDLER_CLEANABLE | ob_clean() |
PHP_OUTPUT_HANDLER_FLUSHABLE | ob_end_flush() |
PHP_OUTPUT_HANDLER_REMOVABLE | ob_end_clean(), ob_end_flush(), ob_get_clean(), ob_get_flush() |
Возвращает true
в случае успешного выполнения или false
, если возникла ошибка.
Пример #1 Пример callback-функции, определённой пользователем
<?php
function callback($buffer)
{
// Заменить все яблоки апельсинами
return (str_replace("яблоки", "апельсины", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>Это всё равно, что сравнить яблоки и апельсины.</p>
</body>
</html>
<?php
ob_end_flush();
?>
Результат выполнения приведённого примера:
<html> <body> <p>Это всё равно, что сравнить апельсины и апельсины.</p> </body> </html>
Пример #2 Создание нестираемого буфера вывода
<?php
ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_REMOVABLE);
?>