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). Чтобы обойти его, передают значение 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_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);

?>

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

  • 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 для восстановление буфера