ob_start

(PHP 4, PHP 5, PHP 7, PHP 8)

ob_startВключает буферизацию вывода

Описание

ob_start(?callable $callback = null, int $chunk_size = 0, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS): bool

Функция включает буферизацию вывода. Пока буферизация вывода активна, вывод из скрипта не отправляется, вместо этого вывод сохраняется во внутреннем буфере. Раздел «Какой вывод буферизуется?» рассказывает, на какой именно вывод это влияет.

Буферы вывода помещаются в стек, поэтому функцию ob_start() разрешается вызывать при другом активном буфере. Если активировали несколько буферов вывода, вывод фильтруется последовательно через каждый из буферов в порядке вложенности. Подробнее об этом рассказывает раздел «Вложенные буферы вывода».

Подробное описание буферов вывода даёт раздел «Пользовательские буферы вывода».

Список параметров

callback

Параметр callback принимает необязательный аргумент с типом callable. Когда требуется, чтобы при вызове с аргументами функция не вызывала callback-функцию, в параметр передают значение null.

Функция, которую передали в параметр callback, вызывается при вызове функций сброса (отправки) или очистки буфера вывода, или при сбросе буфера вывода в конце скрипта.

Сигнатура callback-функции:

handler(string $buffer, int $phase = ?): string
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_flush()
PHP_OUTPUT_HANDLER_REMOVABLE ob_end_clean(), ob_end_flush(), ob_get_clean(), ob_get_flush()

Замечание: До PHP 8.4.0 через параметр flags также устанавливали флаги статуса обработчика вывода.

Возвращаемые значения

Функция возвращает 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);

?>

Смотрите также

  • ob_get_contents() - Возвращает содержимое буфера вывода
  • ob_end_clean() - Очищает (стирает) содержимое активного буфера вывода и отключает его
  • ob_end_flush() - Сбрасывает (отправляет) значение, которое вернул активный обработчик вывода, и отключает активный буфер вывода
  • ob_implicit_flush() - Включает или выключает неявный сброс буфера вывода
  • ob_gzhandler() - Сжимает буфер вывода в формат gzip как callback-функция функции ob_start
  • ob_iconv_handler() - Преобразовывает символы из текущей кодировки в кодировку выходного буфера
  • mb_output_handler() - Преобразовывает кодировку символов в буфере вывода, выступая в роли callback-функции
  • ob_tidyhandler() - Функция обратного вызова ob_start для восстановление буфера