Даже официальная документация, используемая для того, чтобы сказать нам, что «короткие теги» PHP ( <? /*...*/ ?>
) Являются «плохими» . Однако, начиная с PHP 5.4, echo
разновидность <?= /*...*/ ?>
Постоянно включена независимо от параметра short_open_tag
.
Что изменилось?
Даже если они ранее не поощрялись исключительно из-за непредсказуемого характера того, включен ли short_open_tag
на общей платформе хостинга, наверняка, этот аргумент не исчезнет только потому, что в некоторых подмножествах хостов будет работать PHP 5.4?
Вероятно, это изменение языка не является неотъемлемо означающим изменение рекомендации, что мы тем не менее должны избегать «коротких тегов», но если они ушли в беду, это, безусловно, показалось бы, что разработчики PHP больше не «ненавидят» их так много. Правильно?
Единственный логический вывод, который я могу сделать в это время, состоит в том, что для введения этого изменения в PHP 5.4 должно быть какое-то объективное обоснование.
Что это?
Короткие открытые теги не всегда включены с PHP 5.4. Документация рассказывает о коротких эхо-тегах . Это другое дело. (короткие открытые теги являются тегами <?
style, короткие теги эха – это теги <?=
style, для эхо-сигнала).
Тогда почему они включены по умолчанию сейчас? Ну, есть много скриптов, где <?= $somevar ?>
использовать <?= $somevar ?>
Вместо <?php echo $somevar ?>
. И поскольку короткие теги эха не так плохи, как короткие открытые теги, они решили всегда включать короткие теги эха . Потому что теперь разработчики (фреймворки и CMS-es) могут рассчитывать на них (вернее, когда PHP 5.4 становится основной).
Однако короткие короткие теги все еще зависят от параметра short_open_tag
в вашем php.ini.
Только короткий тег echo ( <?=
) Включен постоянно, а не короткие открытые теги ( <?
). Это потому, что короткий тег эха очень удобен при создании шаблонов HTML (или любых других шаблонов), и без этого вам нужно писать намного больше (например, <?php echo $var; ?>
Вместо просто <?= $var ?>
).
Примечание. Начиная с PHP 5.4, короткий тег echo <?=
Всегда распознается и действителен независимо от параметра short_open_tag.
Все, что это говорит, заключается в том, что <?=
Всегда действует, а не <?
Причина в том, что < ?
используется в документах XML, и включение short_open_tags приведет к возникновению ошибок в кодах XML. Но, < ?=
, Так же, как < ?php
не является открытым тегом XML и безопасен в использовании.