Могу ли я использовать ob_clean () без ob_start () раньше? - PullRequest
0 голосов
/ 24 августа 2018

Я не привык к ob_* функциям и начал с чтения документации.
Я хотел бы использовать ob_clean() в методе , но в документации сказано:

Выходной буфер должен быть запущен ob_start() с флагом PHP_OUTPUT_HANDLER_CLEANABLE. В противном случае ob_clean () не будет работать.

Однако я попытался (просто чтобы посмотреть, как это "не сработает") :

echo 'a';
ob_clean();
echo 'b';

Какие выходы b. Здесь все работает нормально, но, следуя документации, не должно, не так ли?

  • Обязательно ли ob_start() для ob_* функций?
  • Существует ли переменная (например, в php.ini ), значение которой по умолчанию позволяет пропускать ob_start()?
  • Как я понимаю " ob_clean () не будет работать" ? Чего мне ожидать?

Я использую PHP 7.2.1, если это имеет значение.

1 Ответ

0 голосов
/ 24 августа 2018

Короткий ответ: да, вам нужно включить буферизацию вывода, прежде чем вы сможете использовать ob_clean. Однако возможно, что у вас включена буферизация вывода для всех файлов через параметр output_buffering ini (см. Руководство ). Проверить это можно через ob_get_level():

echo ob_get_level();

Если результат не равен нулю, буферизация вывода включена.

Если вы используете ob_clean() без буферизации, вы должны увидеть ошибку, подобную этой:

Примечание: ob_clean () [ref.outcontrol]: не удалось удалить буфер. нет буфер для удаления. в [путь к файлу]

...