The manual is a little shy on explaining that output buffers are nested, and that "turns off output buffering" means turning off the highest nested buffer. See ob_get_level (for a useful function, but still no explanation)
<?php
ob_start();
echo "1:blah\n";
ob_start();
echo "2:blah";
// ob_get_clean() returns the contents of the last buffer opened. The first "blah" and the output of var_dump are flushed from the top buffer on exit
var_dump(ob_get_clean());
exit;
?>
puts:
1:blah
string(6) "2:blah"
Prior to realising this, I had thought PHP's ob functionality left more to be desired. I *really* wish I knew earlier.
Çıktı Tamponlama Denetimi
- Giriş
- Yapılandırma/Kurulum
- Öntanımlı Sabitler
- Örnekler
- Çıktı Denetim İşlevleri
- flush — Çıktı tamponunu boşaltır
- ob_clean — Çıktı tamponunu temizler (siler)
- ob_end_clean — Çıktı tamponunu temizler (siler) ve tamponu kapatır
- ob_end_flush — Çıktı tamponunu boşaltır (gönderir) ve tamponu kapatır
- ob_flush — Çıktı tamponunu boşaltır (gönderir)
- ob_get_clean — Geçerli çıktı tamponun içeriğini döndürüp tamponu siler
- ob_get_contents — Çıktı tamponunun içeriği ile döner
- ob_get_flush — Çıktı tamponunu boşaltır, içeriğini bir dizge olarak döndürür ve çıktı tamponlamasını kapatır
- ob_get_length — Çıktı tamponunundaki içeriğin uzunluğunu döndürür
- ob_get_level — Çıktı tamponlama mekanizmasının iç içelik seviyesini döndürür
- ob_get_status — Çıktı tamponlarının durumu ile döner
- ob_gzhandler — Çıktı tamponunu gziplemek için ob_start geriçağırım işlevi
- ob_implicit_flush — Örtük boşaltmayı açar/kapar
- ob_list_handlers — Kullanımdaki çıktı eylemcileri listeler
- ob_start — Çıktı tamponlamasını başlatır
- output_add_rewrite_var — URL yeniden yazım değerlerini ekler
- output_reset_rewrite_vars — URL yeniden yazma değerlerini sıfırlar
Çıktı Denetimi
clancy hood at gmail dot com
11-Apr-2009 06:33
11-Apr-2009 06:33
