C'est un newbie style de codage de la recommandation. C'est pourquoi il est généralement mentionné dans l'introduction des livres.
Sortant ?>
peut éviter l'infâme headers already sent
problème. La fermeture jeton n'est pas la vraie cause de ce message d'erreur. C'est extra les espaces après l' ?>
token qui peut causer que, pour certains d'application de structures, à savoir la sortie inaperçu espaces par inclusion d'autres fichiers.
PHP contient en fait de la magie pour manger un seul \n
retour à la ligne après l' php
clôture jeton. Voir L'histoire de PHP manger des retours à la ligne après la balise de fermeture
Il y avait quelques premiers numéros de PHP de ne pas consommer \r\n
. Il a travaillé sur Windows, mais les scripts téléchargés sur les serveurs Unix généré l'erreur. Il y a donc un écueil supplémentaire. Pas plus d'actualité.
Ce qui est aujourd'hui hante les nouveaux arrivants est la plupart du temps, de la méconnaissance et feuilletée éditeurs. La plupart des éditeurs de texte ont l'habitude d'ajouter une nouvelle ligne à la fin des fichiers de n'importe quoi. Ce n'est pas un problème, mais les nouveaux arrivants ont souvent l'ajouter aussi. Et évidemment, il arrive souvent que l'édition de code le mélange des espaces, des tabulations et extra-retours à la ligne après l' ?>
clôture jeton. (Aucune idée de comment ils ne remarquent pas que!)
Donc je pense que c'est vraiment de bons conseils pour PHP noobs. Cependant, il n'est pas vraiment un moyen infaillible pour éviter l'erreur susmentionnée. Il vient de retards sa découverte, comme nous l'avons Pile Overflowers se doit de connaître. Il y a beaucoup plus de moyens pour déclencher headers already sent
et les nouveaux venus les découvrir tous. Il y a l'invisible BOM ou même HTML et <!DOCTYPE>
avant <?php
, ou souvent simplement print
relevés avant l' header()
appel.
C'est pourquoi, en évitant ?>
est souvent considéré comme juste un moyen pour éviter d'expliquer la langue de base de comportement, mais pas plus de solution que la magie ?>\r\n
newline manger.
Résoudre automatisé
Manuel de garde d' ?>
balises de fermeture n'est pas très contemporaine.
phptags --warn --whitespace *.php
Ou encore:
phptags --unclosed includes/
Le fera pour vous (éditeur de crochet, tâche cron, SCM checkin script). L'ancien résout également les autres pièges potentiels, non seulement closetag question. Voir phptags
balise de plus en ordre.