PHP est l'un des langages de programmation les plus fréquemment utilisés dans le développement Web. L’une des caractéristiques les plus importantes de ce langage est qu’il propose différentes méthodes de limitation. Jetons un bref coup d'œil aux balises d'ouverture et de fermeture PHP :

  • <?php ?>
  • <?= ?>
  • <? ?>
  • <% %>

Afin d’utiliser PHP plus efficacement, il est nécessaire de comprendre les différences et l’importance de ces balises. Dans cet article, nous apprendrons comment utiliser efficacement les balises PHP.

Pourquoi ne devrions-nous pas utiliser de balises PHP courtes ?

Les balises PHP courtes peuvent être plus utiles pour faciliter et accélérer le codage. Cependant, sur la plupart des hébergements et serveurs, il est désactivé par défaut dans la configuration PHP.ini. Dans la configuration PHP.ini pour que ces balises courtes fonctionnent short_open_tag l’option doit être activée. Donc, la seule méthode qui fonctionnera certainement sur chaque serveur PHP est . Si vous envisagez de déployer votre PHP sur un serveur que vous ne contrôlez pas, vous pouvez toujours <?php ?> Vous devriez utiliser l'approche.

Balise d'écho PHP courte et PHP.ini

<?php echo() ?>

en PHP <?= balise dans la configuration PHP short_open_tag Il peut être utilisé que l'option soit activée ou non, vous pouvez donc utiliser en toute sécurité ce raccourci au lieu de celui ci-dessus.
Si vous écrivez simplement du code pour vous-même et pouvez contrôler la configuration PHP que vous utilisez, les balises courtes peuvent être plus utiles. Mais souviens-toi de ça <? ?> La balise peut entrer en conflit avec les déclarations XML. Aussi <% %> La balise est en fait de style ASP.

Balises de fermeture PHP et problèmes potentiels

Fermeture d'un fichier PHP pur (par exemple, un fichier contenant uniquement une définition de classe) ?> Lors de l’ajout de la balise, veillez à ne laisser aucune ligne vide. Bien que l'interpréteur PHP puisse "exécuter" en toute sécurité un seul caractère de saut de ligne après la balise de fermeture, d'autres sauts de ligne peuvent être affichés dans le navigateur. Si vous écrivez ensuite des en-têtes HTTP, les choses peuvent devenir encore plus confuses.

PHPPSR-2

La norme de codage PSR-2 fait partie des normes de codage PHP PSR créées pour déterminer les meilleures pratiques en PHP. Les normes de codage PSR-2 s'appliquent uniquement aux fichiers contenant du code PHP. ?> recommande de ne pas utiliser de balises de fermeture. La principale raison de cette recommandation est d'éviter que des caractères tels que des espaces ou des sauts de ligne laissés accidentellement après la balise de fermeture ne soient envoyés au navigateur. En PHP, ?> Tout caractère suivant la balise est automatiquement considéré comme faisant partie de la sortie HTML. Cela peut être particulièrement problématique lors du traitement des en-têtes HTTP.

Les caractères inutiles à la fin d’un fichier PHP peuvent empêcher le traitement correct des en-têtes HTTP. Dans le protocole HTTP, toute sortie rend impossible l'envoi d'en-têtes car les en-têtes doivent être complétés avant que le contenu ne soit envoyé. Cela provoque un problème appelé en-têtes déjà envoyés, qui peut affecter des actions telles que le démarrage d'une session, la définition d'un cookie ou la redirection d'une page.

Par conséquent, PSR-2 recommande de ne pas utiliser la balise de fermeture dans les fichiers contenant uniquement du code PHP, afin d'éviter de telles erreurs courantes et de préserver la propreté du code. Cette approche élimine les éventuels problèmes pouvant survenir en raison d'espaces indésirables ou de caractères de fin de ligne à la fin du code et contribue à un fonctionnement plus stable et sans erreur des scripts PHP.

Balises PHP et compatibilité

Lors de l'écriture d'applications Web pour des versions antérieures, la fermeture ?> HTML avec balises <!doctype> Attention à ne pas laisser de nouvelle ligne entre les balises. Les anciennes versions d'IE peuvent générer différentes erreurs si elles rencontrent des espaces, y compris des nouvelles lignes, avant la déclaration doctype. Ce n'est pas le cas avec les versions plus récentes d'IE et d'autres navigateurs plus avancés. (C'est-à-dire pour tous les navigateurs autres que IE.)