Pourquoi il est déconseillé d'utiliser les balises courtes (short tags) ? - Apprendre-PHP.com

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Pourquoi il est déconseillé d'utiliser les balises courtes...

Pourquoi il est déconseillé d'utiliser les balises courtes (short tags) ?

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 XML
Parse 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
echo '<?xml version="1.0" encoding="utf-8" standalone="yes"?>',"\n";
?>

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

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

Merci

2. Par Emacs le mercredi 12 décembre 2007 à 09:09

Pas de quoi Emoticone clin d'oeil

3. Par ravnnika le dimanche 23 décembre 2007 à 17:05

Enfin je trouve une explication. Merci ! Emoticone content

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 Emoticone content

7. Par Geoffroy le dimanche 10 février 2008 à 23:11

Pas mal, c'est vrai que ça peut servir Emoticone content
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 Emoticone content

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...

Ajouter un commentaire

Votre avis
Se souvenir de mes informations