Agir en fonction d'une erreur
- <?php
- ob_start();
- $lapin = diversTraitements();
- echo $civet = grosTraitement($lapin);
- $erreur = provoqueUneErreur($civet);
- if ($erreur) {
- ob_end_clean();
- afficheUneExcuse($erreur);
- }
- else {
- ob_end_flush();
- }
- ?>
|
Le premier besoin pour cette fonctionnalité s'est fait ressentir quand les développeurs ont dû ajouter ou modifier des en-têtes (par exemple, créer un cookie, ou faire une redirection), alors même que ceux-ci avaient déjà été envoyés.
Autre besoin : éviter qu'un problème d'envoi d'en-têtes ne survienne quand un message d'erreur se présente à un moment inopportun.
L'objectif, avec la bufferisation, est avant tout de travailler sur les en-têtes et le contenu, sans devoir se soucier si ce travail est fait dans le bon ordre. Ce, simplement en encadrant son code des appels ob_start() et ob_end_flush() , par exemple.
Mais il est également possible de réaliser des traitements sur le contenu du tampon. Ainsi, selon qu'il génère une erreur interne au code, ou même une erreur PHP, on pourra modifier l'affichage pour prendre en compte ce qu'il s'est déroulé, et éviter au visiteur de recevoir une erreur inutile.
|