Как заголовки работают с выходной буферизацией в 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 ?

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

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