web-dev-qa-db-fra.com

Fermer ou ne pas fermer php

J'ai lu qu'il est conseillé (surtout avec php 7) de ne pas fermer les fichiers php avec ?>

Beaucoup de mes fichiers WP php se terminent ainsi:

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Dois-je enlever la balise de fermeture et avoir quelque chose comme ça

<?php get_sidebar(); ?>
<?php get_footer(); 

à la fin de mes fichiers?

13
IXN

Oui, évitez de fermer les balises PHP à la fin du fichier, non seulement avec PHP 7, mais également avec PHP 5.

La raison en est que si vous fermez la balise, tout ce qui se trouve après la balise, même une ligne vide, sera envoyé à la sortie et obligera PHP à envoyer des en-têtes, empêchant ainsi le cookie d'être défini, redirigé vers le travail , aliment pour être valide, et ainsi de suite.

Je suppose que vous avez déjà rencontré un message comme

Impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par (sortie commencée à ...) dans ... en ligne ...

Un ?> de fermeture à la fin du fichier peut en être la cause.

17
gmazzap

Compte tenu de votre exemple spécifique, je garderais la balise de fermeture, c’est-à-dire les appels de fonction d’une ligne dans un modèle. C’est cohérent et facilite la clarté (de la même manière que WordPress recommande (virgules de fin de tableau pour les tableaux ) - sinon, imaginez si un non-développeur a récupéré votre fichier et a commencé à l’ajouter:

<?php get_footer();

<div>What the hell am I doing wrong?</div>

Cependant, pour tous les autres fichiers (fonctions, inclut, etc.), le conseil est certainement une bonne idée:

<?php // Start of file

class MY_Class {
    function just_do_it() {
    }
}

// Bye bye closing tag

Je trouve que c'est plus propre, et comme d'autres l'ont mentionné, aucun risque de la redoutable "en-têtes déjà envoyés".

11
TheDeadMedic