Как заголовки работают с выходной буферизацией в PHP?

Заголовок не требует пояснений.

У меня есть хороший опыт работы с PHP, но я не уверен, как работает функция header между ob_start() и ob_end_clean().

Рассмотрим это:

ob_start();

echo "Some content";
header('X-Example-Header: foo');
echo "Some more content";

$output = ob_get_contents();
ob_end_clean();

echo $output;

Функция header игнорирует буферизацию вывода, и, таким образом, все заголовки отправляются перед контентом, потому что после header вызова <<20 > после header?

echo

Или это работает по-другому?

Ответ 1

header() действительно игнорирует буферизацию вывода. Одна из причин использования буферизации вывода заключается в том, что вы можете отправлять заголовки HTTP "не в порядке", так как ответ буферизуется. Вы не можете отправлять заголовки HTTP после того, как вы отправили какой-либо вывод (если только этот вывод не буферизирован).