web-dev-qa-db-fra.com

Pourquoi les balises courtes "echo" sont-elles activées en permanence à partir de PHP 5.4?

Même la documentation officielle nous disait que "balises courtes" PHP (<? /*...*/ ?>) sont "mauvais" . Cependant, puisque PHP 5.4, la variété echo<?= /*...*/ ?> est activé de façon permanente quel que soit le short_open_tag paramètre .

Qu'est-ce qui a changé?

Même s'ils étaient auparavant découragés uniquement en raison de la nature imprévisible du fait que short_open_tag est activé sur une plateforme d'hébergement partagé, cet argument ne disparaît sûrement pas simplement parce qu'un sous-ensemble d'hôtes sera exécuté PHP 5.4?

On peut soutenir que ce changement de langue ne signifie pas intrinsèquement un changement dans la recommandation selon laquelle nous devons néanmoins éviter les "balises courtes", mais s’ils ont posé problème, il semblerait certainement que le PHP = les développeurs ne les "détestent" plus autant.

La seule conclusion logique que je peux tirer en ce moment est qu'il doit y avoir une justification objective pour l'introduction de ce changement dans PHP 5.4.

Qu'est-ce que c'est?

36

Les balises ouvertes courtes ne sont pas toujours activées car PHP 5.4. La documentation parle de la balises d'écho courtes . Ce qui est différent. (les balises ouvertes courtes sont <? les balises de style, les balises d'écho courtes sont <?= balises de style, pour l'écho).

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

Cependant, les balises courtes ouvertes sont toujours influencées par les short_open_tag paramètre dans votre php.ini.

43
kokx

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

4
lupatus

Remarque: Commençant par PHP 5.4, balise d'écho courte <?= est toujours reconnu et valide, quel que soit le paramètre short_open_tag.

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

2
Glavić

La raison en est que < ? est utilisé dans les documents XML et l'activation de short_open_tags générera des erreurs dans les codes XML. Mais, < ?=, juste comme < ?php n'est pas une balise ouverte XML et est sûr à utiliser.

2
user2983350