Ne fermez pas vos tags à la fin des fichiers PHP
Pendant que NikO nous présente ses conventions de codage, parlons d’une autre bonne pratique concernant les tags de délimitation de blocs en PHP.
Le langage PHP n’impose pas de fermer un bloc de code avec ?> si se bloc se trouve tout à la fin du fichier, et pour cause, mieux vaut l’omettre dans les fichiers susceptibles d’êtres inclus par d’autres !
Prenons ce bout de code :
date.php
<?php
$year = date('Y');
?>
Notez bien la ligne blanche après le tag de fermeture. Et maintenant :
redirige.php
<?php
include('date.php');
if($year < 2009) {
header('Location: http://lapin-blanc.net');
exit;
}
?>
Si notre serveur est à l'heure, nous ne sommes plus en 2008 et vous pouvez voir cette page !
Catastrophe ! C’est la très pénible erreur Warning: Cannot modify header information – headers already sent by… qui s’affiche.
PHP a envoyé la ligne blanche (\n) de notre fichier date.php au navigateur, avec les en-têtes HTTP qui vont bien. Impossible d’ajouter de nouveaux en-têtes ni de rediriger l’utilisateur une fois que le début du corps de la requête a été envoyé.
Il faut savoir que certains éditeurs de texte ajoutent automatiquement un retour charriot à la fin des fichier lors de leur création ou de leur enregistrement.
Otez les ?> à la fin de vos classes, bibiliothèques et tout autres fichiers qui seront inclus par d’autres. Même si votre éditeur n’a pas se malheureux comportement, ce n’est peut-être pas le cas de ceux de vos collègues, des contributeurs du projet sur lequel vous travaillez… ou que vous utilisez.


















