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.
Bufferisation de sortie
- Introduction
- Installation/Configuration
- Constantes pré-définies
- Exemples
- Fonctions de bufferisation de sortie
- flush — Vide les tampons de sortie
- ob_clean — Efface le tampon de sortie
- ob_end_clean — Détruit les données du tampon de sortie et éteint la tamporisation de sortie
- ob_end_flush — Envoie les données du tampon de sortie et éteint la tamporisation de sortie
- ob_flush — Envoie le tampon de sortie
- ob_get_clean — Lit le contenu courant du tampon de sortie puis l'efface
- ob_get_contents — Retourne le contenu du tampon de sortie
- ob_get_flush — Vide le tampon, le retourne en tant que chaîne et stoppe la tamporisation
- ob_get_length — Retourne la longueur du contenu du tampon de sortie
- ob_get_level — Retourne le nombre de niveaux d'imbrications du système de tamporisation de sortie
- ob_get_status — Lit le statut du tampon de sortie
- ob_gzhandler — Fonction de rappel pour la compression automatique des tampons
- ob_implicit_flush — Active/désactive l'envoi implicite
- ob_list_handlers — Liste les gestionnaires d'affichage utilisés
- ob_start — Enclenche la tamporisation de sortie
- output_add_rewrite_var — Ajoute une règle de réécriture d'URL
- output_reset_rewrite_vars — Annule la réécriture d'URL
Contrôle de l'affichage
clancy hood at gmail dot com
11-Apr-2009 06:33
11-Apr-2009 06:33
