Почему короткие короткие теги «echo» постоянно включены с PHP 5.4?

Даже официальная документация, используемая для того, чтобы сказать нам, что «короткие теги» 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 и безопасен в использовании.