Буферизация вывода PHP? Какая практика?

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

Итак, что такое лучшая практика? Используйте переменную $output и продолжайте добавлять к ней, а затем выведите ее в конце? Или используйте ob_str () и т. Д.?

Есть ли выбор, чтобы выбрать причину для восстановления кода для одного над другим? Или это просто личное предпочтение?

Solutions Collecting From Web of "Буферизация вывода PHP? Какая практика?"

Для меня я сделал это:

 <?php ob_start(); //do your process here if($error) { ob_end_clean(); header('Location: /some/path.php'); exit; } ob_end_flush(); ?> 

Я открываю буфер с помощью ob_start(); ( http://php.net/manual/en/function.ob-start.php )

Тогда все, что обычно отправляется в браузер (кроме заголовков), сохраняется в буфере, пока я его не закрою. Когда я хочу выводить или манипулировать буфером, я обращаюсь к нему следующим образом:

$buffer = ob_get_clean(); ( http://php.net/manual/en/function.ob-get-clean.php )

Здесь есть много других вариантов буферов:

http://www.php.net/manual/en/ref.outcontrol.php

Это лучший способ, на мой взгляд, потому что вам не нужно добавлять элементы в буфер; PHP автоматически захватывает все, пока буфер открыт.

Хорошо написанный код не нуждается в буферизации вывода. Под этим я подразумеваю: во-первых, вы делаете всю свою обработку без вывода. Бизнес-логика, валидация, доступ к базе данных – такой материал. После этого вы можете закрыть соединение с БД, сеанс и т. Д., Потому что все, что вы делаете, это создание вашего вывода на основе данных, собранных выше.
Этот метод обычно приводит к значительно лучшему поддерживаемому коду.