PHP: Afterbuff, encore mieux que l'aftershave
Par Christophe, mardi 4 juillet 2006 à 09:06 :: Développement :: #67 :: rss
Après ce jeu de mot pourri que vous me pardonnerez, je vais vous présenter la classe qui a un ratio utilité/taille le plus grand que j'ai jamais réalisé.
Mon problème de départ était simple : "comment remplacer une partie du <title> de la page alors que l'on est déjà au beau milieu de cette page ?", et comme tout est évidemment bufferisé, ça s'est transformé en "comment modifier le buffer après coup depuis n'importe quel endroit ?"
<?php class Afterbuff { // encore mieux que l'aftershave function __construct(){ $this->todo = ''; } function add($string){ $this->todo .= " \n".$string; // pour qu'il soit presentable lors d'un hypothetique affichage } function exec(){ global $buffer; // devinez ce que contient cette variable ? $retour = eval($this->todo); if($retour != false) $this->todo = ''; return $retour; } } ?>
Oui, ça n'a rien de révolutionnaire, c'est même stupide en fait, mais c'est rudement utile. Exemple d'utilisation :
<?php // ... dans vos headers, apres le debut de la bufferisation $AFTERBUFF = new Afterbuff; // ici on ecrit dans le buffer le <title> echo '<title>Blabla ProutProut</title>'; // .... n'importe ou sur le site, avec $blah = 'Vlan'; $AFTERBUFF->add('$buffer = str_replace("ProutProut","PouetPouet '.$blah.'",$buffer);'); // .... dans le footer php $buffer = ob_get_contents(); ob_end_clean(); $AFTERBUFF->exec(); echo $buffer; ?>
Voili voilà.

Commentaires
1. Le mardi 4 juillet 2006 à 15:36, par geoffrey
2. Le mardi 4 juillet 2006 à 18:29, par Christophe
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.