Fermer ou ne pas fermer php

12

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?

    
posée IXN 04.12.2015 - 13:01

2 réponses

16

Oui, évitez de fermer les balises PHP à la fin du fichier, pas seulement avec PHP 7, mais aussi 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, filé vers être valide, et ainsi de suite.

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

  

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

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

    
réponse donnée gmazzap 04.12.2015 - 16:27
11

Étant donné votre exemple spécifique, je conserverais la balise de fermeture, c’est-à-dire les appels de fonction sur une ligne dans un modèle. C’est cohérent et facilite la clarté (de la même manière que WordPress recommande des virgules de fin 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".

    
réponse donnée TheDeadMedic 04.12.2015 - 18:36

Lire d'autres questions sur les étiquettes