2014-02-22 3 views
1

Из руководства PHP: PHP_OUTPUT_HANDLER_CLEANABLE const управляет доступом к функциям: ob_clean(), ob_end_clean() и ob_get_clean().php output buffering mask

ob_start(null, 0, PHP_OUTPUT_HANDLER_CLEANABLE); 

Использование ob_end_clean(), есть примечание: "ob_end_clean(): не удалось сбросить буфер вывода по умолчанию обработчик (1)".

Использование ob_get_clean(), есть даже двойное уведомление: «ob_get_clean(): не удалось удалить буфер обработчика вывода по умолчанию (1)».

Я понимаю, что только очищаемый буфер не может быть очищен и удален. Итак, почему в руководстве эти функции находятся под контролем PHP_OUTPUT_HANDLER_CLEANABLE const? Я запутался в использовании флагов в буферизации вывода.

+0

Какую версию php вы используете? –

+0

PHP версия 5.5.8 – Krzysztek

ответ

4

Передача только PHP_OUTPUT_HANDLER_CLEANABLE в качестве аргумента arg ob может быть очищена, а не очищена или удалена (завершена). ob_end_clean() пытается удалить (завершить) буфер, но флаг PHP_OUTPUT_HANDLER_REMOVABLE не прошел, поэтому это является причиной ошибки. ob_get_clean() по существу выполняет как ob_get_contents(), так и ob_end_clean(), а также ошибку.

Передача только PHP_OUTPUT_HANDLER_FLUSHABLE как средство arg ob может быть очищено, очищено или удалено (завершено).

Передача только PHP_OUTPUT_HANDLER_REMOVABLE в качестве аргумента arg ob может быть удалена только (завершена), не очищена или не очищена.

Передача (PHP_OUTPUT_HANDLER_CLEANABLE | PHP_OUTPUT_HANDLER_FLUSHABLE) в качестве аргумента arg может быть очищена и очищена, а не удалена (завершена).

Передача (PHP_OUTPUT_HANDLER_CLEANABLE | PHP_OUTPUT_HANDLER_FLUSHABLE | PHP_OUTPUT_HANDLER_REMOVABLE) как средство arg ob может быть очищено, очищено и удалено (завершено).

Аналогичный результат для всех других комбинаций, кроме отметить, что PHP_OUTPUT_HANDLER_STDFLAGS является аббревиатурой, или же, как и (PHP_OUTPUT_HANDLER_CLEANABLE | PHP_OUTPUT_HANDLER_FLUSHABLE | PHP_OUTPUT_HANDLER_REMOVABLE).