Question Les balises PHP sont-elles acceptables?


Voici l'information selon la documentation officielle:

Il y a quatre paires de   ouverture et fermeture des étiquettes qui peuvent être   utilisé en PHP. Deux d'entre eux, <?php ?>   et <script language="php"> </script>,   sont toujours disponibles. Les deux autres   sont des balises courtes et des balises de style ASP, et   peut être allumé et éteint depuis le   Fichier de configuration php.ini En tant que tel,   alors que certaines personnes trouvent des étiquettes courtes et   Étiquettes de style ASP pratique, ils sont   moins portable, et généralement pas   conseillé.

Dans mon expérience la plupart des serveurs faire avoir des balises courtes activées. Dactylographie

<?=

est beaucoup plus pratique que de taper

<?php echo 

La commodité des programmeurs est un facteur important, donc Pourquoi Ne sont-ils pas recommandés?


499
2017-10-14 10:21


origine


Réponses:


Ils ne sont pas recommandés parce que c'est un PITA si vous devez déplacer votre code sur un serveur où il n'est pas supporté (et vous ne pouvez pas l'activer). Comme vous le dites, beaucoup d'hôtes partagés faire soutenir les shorttags mais "lots" ne sont pas tous. Si vous voulez partager vos scripts, il est préférable d'utiliser la syntaxe complète.

Je suis d'accord que <? et <?= sont plus faciles sur les programmeurs que <?php et <?php echo mais il est possible de faire une recherche et un remplacement en masse tant que vous utilisez le même formulaire à chaque fois (et ne pas glisser dans les espaces (ex: <? php ou <? =)

Je n'achète pas la lisibilité comme une raison du tout. La plupart des développeurs sérieux ont la possibilité de mettre en évidence la syntaxe disponible pour eux.

Comme le mentionne ThiefMaster dans les commentaires, à partir de PHP 5.4, <?= ... ?> les balises sont prises en charge partout, indépendamment des paramètres des balises. Cela devrait signifier qu'ils sont sûrs à utiliser dans un code portable, mais cela signifie qu'il y a une dépendance à PHP 5.4+. Si vous voulez soutenir pre-5.4 et ne peut pas garantir les balises, vous devrez toujours utiliser <?php echo ... ?>.

Aussi, vous devez savoir que Les balises ASP <%,%>, <% = et la balise de script sont supprimées de PHP 7. Donc, si vous souhaitez soutenir le code portable à long terme et que vous souhaitez passer aux outils les plus modernes, pensez à changer ces parties du code.


362
2017-10-14 10:31



J'aime trop <?=$whatever?> pour le laisser partir. Je n'ai jamais eu de problème avec ça. Je vais attendre que ça me morde dans le cul. En toute sincérité, 85% de (mes) clients ont accès à php.ini dans le rare occasion, ils sont éteints. Les 15% restants utilisent des fournisseurs d'hébergement conventionnels et la quasi-totalité d'entre eux les ont activés. Je les aime


169
2017-10-14 23:14



À partir de PHP 5.4, le raccourci echo est un problème distinct des balises courtes, car le raccourci echo sera toujours activé. C'est un fait maintenant:

Donc, le raccourci d'écho lui-même (<?=) est sûr à utiliser maintenant.


134
2018-05-19 20:58



Le problème avec toute cette discussion réside dans l'utilisation de PHP comme langage de modèle. Personne ne prétend que les balises devraient être utilisées dans les fichiers sources des applications.

Cependant, la syntaxe intégrable de PHP lui permet d'être utilisé comme un langage modèle puissant, et les modèles doivent être aussi simples et lisibles que possible. Beaucoup ont trouvé plus facile d'utiliser un moteur de template additif beaucoup plus lent comme Smarty, mais pour les puristes qui exigent un rendu rapide et une base de code pure, PHP est le seul moyen d'écrire des templates.

Le seul argument valide CONTRE l'utilisation de balises courtes est qu'elles ne sont pas supportées sur tous les serveurs. Les commentaires sur les conflits avec les documents XML sont ridicules, car vous ne devriez probablement pas mélanger PHP et XML de toute façon; et si vous l'êtes, vous devriez utiliser PHP pour sortir des chaînes de texte. La sécurité ne devrait jamais être un problème, parce que si vous mettez des informations sensibles comme des informations d'identification d'accès à la base de données à l'intérieur des fichiers modèles, alors vous avez de plus gros problèmes!

Maintenant, en ce qui concerne la question du support des serveurs, il faut admettre qu'il est nécessaire de connaître leur plate-forme cible. Si l'hébergement partagé est une cible probable, les balises courtes doivent être évitées. Mais pour de nombreux développeurs professionnels (comme moi-même), le client reconnaît (et en fait dépend du fait) que nous allons dicter les exigences du serveur. Souvent, je suis responsable de la configuration du serveur moi-même.

Et nous ne travaillons JAMAIS avec un fournisseur d'hébergement qui ne nous donne pas le contrôle absolu de la configuration du serveur - dans un tel cas, nous pourrions compter sur beaucoup plus de problèmes que la simple perte de la prise en charge des balises. Ça n'arrive pas.

Donc oui - je suis d'accord que l'utilisation des étiquettes courtes doit être soigneusement pesée. Mais je crois fermement que cela devrait TOUJOURS être une option, et qu'un développeur qui est conscient de son environnement devrait se sentir libre de les utiliser.


78
2017-12-21 23:16



Les étiquettes courtes reviennent grâce à Zend Framework en poussant le "PHP comme langage de template" dans leurs configuration MVC par défaut. Je ne vois pas en quoi consiste le débat, la plupart des logiciels que vous produirez au cours de votre vie fonctionneront sur un serveur que vous ou votre entreprise contrôlerez. Tant que vous restez cohérent, il ne devrait pas y avoir de problèmes.

METTRE À JOUR

Après avoir fait pas mal de travail avec Magento, qui utilise la forme longue. En conséquence, je suis passé à la forme longue de:

<?php and <?php echo

plus de

<? and <?=

On dirait une petite quantité de travail pour assurer l'interopérabilité.


32
2017-10-21 21:45



Parce que la confusion qu'il peut générer avec les déclarations XML. Beaucoup de gens se mettre d'accord  avec vous, cependant.

Une autre préoccupation est la douleur qu’elle génère pour tout coder avec des balises courtes, seulement pour découvrir à la fin que le serveur d’hébergement final les a désactivées ...


20
2017-10-14 10:24



Voici le merveilleux diagramme de flux de la même chose:

decision making tree of the use of <?=

La source: question similaire sur Software Stack Exchange


18
2018-04-24 05:10



http://uk3.php.net/manual/fr/language.basic-syntax.phpmode.php a beaucoup de conseils, y compris:

alors que certaines personnes trouvent des étiquettes courtes et   Étiquettes de style ASP pratique, ils sont   moins portable, et généralement pas   conseillé.

et

notez que si vous incorporez PHP   au sein de XML ou XHTML, vous devrez   Utilisez le <?php ?> tags pour rester   conforme aux normes.

et

L'utilisation de balises courtes devrait être évitée   lors du développement d'applications ou   bibliothèques destinées à   redistribution ou déploiement sur PHP   les serveurs qui ne sont pas sous votre   contrôle, car les balises courtes peuvent ne pas être   pris en charge sur le serveur cible. Pour   portable, code redistribuable, être   Assurez-vous de ne pas utiliser de petites balises.


13
2018-05-30 11:34



Dans le cas où quelqu'un fait toujours attention à cela ... Depuis PHP 5.4.0 Alpha 1 <?= est toujours disponible:

http://php.net/releases/NEWS_5_4_0_alpha1.txt

Donc, il semble que les étiquettes courtes sont (a) acceptables et (b) ici pour rester. Pour le moment au moins ...


12
2017-08-16 14:51



  • Les balises courtes ne sont pas activées par défaut dans certains serveurs Web (hôtes partagés, etc.). portabilité du code devient un problème si vous devez passer à l'un d'entre eux.

  • Lisibilité peut être un problème pour certains. De nombreux développeurs peuvent trouver que <?php attire l'attention comme un marqueur plus évident du début d'un bloc de code que <? lorsque vous numérisez un fichier, en particulier si vous êtes bloqué avec une base de code avec HTML et PHP étroitement inter-tissé.


12
2017-10-14 10:25



Remarque: à partir de PHP 5.4, la balise courte, <?=, est maintenant toujours disponible.


8
2018-05-30 12:14