Pourquoi il est déconseillé d'utiliser les balises courtes...
- Par Emacs
- 10 commentaires
- 2 278 lectures
- Format PDF
- RSS - Atom
Comme vous le savez tous, tout script PHP doit être entouré de balises spécifiques. Ces dernières permettent à l'interprêteur de savoir à quel endroit dans le fichier se trouve du code PHP à exécuter. Sur Apprendre-PHP.com, tous les scripts présentés utilisent les balises <?php et ?>; et ce n'est pas du tout par hasard...
Les différentes balises de délimitation de code PHP
Il existe en effet plusieurs syntaxes de balises PHP. Les voici détaillées dans la liste suivante :
- <?php et ?> (tags formels du langage)
- <? et ?> (tags courts très employés par les webmasters débutants)
- <?= et ?> (très rarement utilisés)
- <% et %> (tag issus du langage ASP - rarement utilisés)
- <script language="php"> et </script?> (très rarement utilisés)
Pourquoi préférer <?php et ?> ?
Tout simplement parceque les tags <?php et ?> assurent une portabilité totale sur tous les serveurs et toutes les versions de PHP. Ce sont les tags par défaut du langage PHP.
En revanche, les « short-tags » pourraient empêcher l'exécution de vos scripts pour les deux raisons suivantes :
- Le serveur qui héberge vos pages PHP désactive l'utilisation de ces balises par la directive short_open_tags du php.ini placée à la valeur off.
- Il y'a une confusion avec la balise d'ouverture d'un fichier XML.
En effet, un fichier XML débute par la syntaxe suivante :
Prologue d'un fichier XML<?xml version="1.0" encoding="utf-8" standalone="yes"?>
On remarque la présence du short tag <? au tout début du code et ?> à la fin. A la lecture du fichier, l'interprêteur PHP tentera d'exécuter cette ligne (pensant que c'est du PHP) et renverra une erreur d'analyse similaire à celle ci-dessous :
Erreur de syntaxe : conflit entre l'interprêteur PHP et le fichier XMLParse error: syntax error, unexpected T_STRING in /Applications/MAMP/htdocs/Tests-PHP/xml.php on line 1
Le seul moyen de palier à ce problème est de générer ce code XML à l'aide d'une instruction echo() par exemple.
Solution pour éviter ce conflit<?php?>
Je ne vais pas modifier tous mes fichiers quand même...
Si vous ne comptez pas changer d'hébergeur, alors ne modifiez pas tous vos scripts mais par contre pensez à adopter cette bonne pratique pour vos applications futures. Vous n'êtes pas à l'abri d'une configuration différente d'un serveur (celui d'un client par exemple).
Notez par exemple que le logiciel EasyPHP.2 interdit par défaut les balises courtes afin de forcer les développeurs à adopter cette bonne pratique :-)
Ce tutoriel a été réalisé à partir du billet de Frédéric Bouchery : Pourquoi il ne faut pas utiliser les balises courtes ?
Les commentaires
2. Par Emacs le mercredi 12 décembre 2007 à 09:09
Pas de quoi
![]()
3. Par ravnnika le dimanche 23 décembre 2007 à 17:05
Enfin je trouve une explication. Merci !
![]()
4. Par Jjenn le mardi 01 janvier 2008 à 12:12
Cela est pourtant logique. Merci pour la précision.
5. Par HardMicro-fr le samedi 05 janvier 2008 à 03:03
Merci pour l'explication
6. Par baton le dimanche 10 février 2008 à 22:10
C'est donc pour ça...
Merci pour l'info![]()
7. Par Geoffroy le dimanche 10 février 2008 à 23:11
Pas mal, c'est vrai que ça peut servir
J'utilisais <? et ?> au début, mais maintenant je n'utilise plus que <?php ?>, j'ai déjà eu un problème avec un serveur à cause de ça![]()
8. Par Sun Location le mercredi 07 mai 2008 à 14:02
Merci
9. Par Sithran le jeudi 08 mai 2008 à 17:05
A partir de quelle version de PHP les balises courtes seront-elles retirées ?
10. Par Emacs le jeudi 08 mai 2008 à 19:07
J'ai un doute mais il me semble qu'elle seront désactivées par défaut dans PHP 6, voire même supprimées. Mais à vérifier...

1. Par makram le mercredi 12 décembre 2007 à 08:08