Pourquoi les tags courts" echo " sont-ils activés en permanence à partir de PHP 5.4?

même la documentation officielle utilisée pour nous dire que PHP" short tags "( <? /*...*/ ?> ) sont" mauvais " . Cependant, depuis PHP 5.4, la" variété echo 151920920" est activée en permanence indépendamment du short_open_tag réglage .

Qu'est-ce qui a changé?

même s'ils étaient auparavant découragés uniquement en raison de la nature imprévisible de si"" est activé sur une plate-forme d'hébergement partagée, cet argument ne disparaît sûrement pas simplement parce qu'un sous-ensemble D'hôtes exécutera PHP 5.4?

on peut soutenir que ce changement de langage ne signifie pas nécessairement un changement dans la recommandation que nous devrions néanmoins éviter les" tags courts", mais s'ils se sont donné la peine, il semblerait certainement que les développeurs PHP ne les" détestent " plus tellement. Droit?

la seule conclusion logique que je puisse tirer pour le moment, on peut dire qu'il doit y avoir une justification objective à l'introduction de ce changement dans PHP 5.4.

Qu'est-ce que c'est?

34
demandé sur Community 2013-01-07 04:40:30

4 réponses

Short open tags ne sont pas toujours activés depuis PHP 5.4. La documentation parle des courtes balises echo . Qui est une chose différente. (les étiquettes courtes ouvertes sont des étiquettes de style <? , les étiquettes d'écho courtes sont des étiquettes de style <?= , pour l'écho-ing).

, Alors pourquoi sont-ils activés par défaut maintenant? Eh bien, il y a beaucoup de scripts là-bas, où il est avantageux d'utiliser <?= $somevar ?> au lieu de <?php echo $somevar ?> . Et parce que les courtes balises echo ne sont pas aussi mauvaises que les courtes balises open, ils ont choisi de toujours activer les courtes balises echo . Parce que maintenant les développeurs (de Framework et CMS-es) peuvent compter sur eux (ou plutôt, quand PHP 5.4 devient mainstream).

cependant, les balises open sont encore influencées par le paramètre short_open_tag dans votre php.ini.

42
répondu kokx 2013-01-07 14:54:34

seule la balise écho courte ( <?= ) est activée en permanence, et non les balises ouvertes courtes ( <? ). C'est parce que la balise echo courte est vraiment pratique quand vous créez des modèles HTML (ou n'importe quel autre modèle de vue) et sans cela vous devez écrire beaucoup plus (comme <?php echo $var; ?> au lieu de juste <?= $var ?> ).

4
répondu lupatus 2013-01-07 00:52:55

Note: à partir de PHP 5.4, La balise écho courte <?= est toujours reconnue et valide, quel que soit le paramètre short_open_tag.

Tout ce que cela signifie, c'est que <?= est toujours valide, et non <?

2
répondu Glavić 2013-07-16 11:07:54

la raison est que < ? est utilisé dans les documents XML et activer short_open_tags générera des erreurs dans les codes XML. Mais, < ?= , tout comme < ?php n'est pas XML open tag et est sûr à utiliser.

2
répondu user2983350 2013-11-12 13:25:39