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

Даже официальная документация, используемая, чтобы сказать нам, что PHP "короткие теги" (<? /*...*/ ?>), является "плохим" . Однако с PHP 5.4, echo сорт <?= /*...*/ ?> постоянно включен независимо от параметра short_open_tag.

Что изменилось?

Даже если они ранее были обескуражены исключительно из-за непредсказуемого характера того, включена ли short_open_tag на платформе общедоступного хостинга, этот аргумент не исчезнет только потому, что в некоторых подмножествах хостов будет работать PHP 5.4?

Возможно, это изменение языка не является неотъемлемо означающим изменение рекомендации, которое мы тем не менее должны избегать "коротких тегов", но если бы они пошли навстречу, это, безусловно, показалось бы, что PHP-разработчики больше не "ненавидят" "Их так много. Правильно?

Единственный логический вывод, который я могу сделать в это время, состоит в том, что должно быть какое-то объективное обоснование для введения этого изменения в PHP 5.4.

Что это?

Ответ 1

Короткие открытые теги не всегда включены с PHP 5.4. В документации говорится о коротких тегах эха. Это другое дело. (короткие открытые теги <? теги стиля, короткие теги эха являются тегами стиля <?=, для эхо-сигнала).

Тогда почему они включены по умолчанию сейчас? Ну, там есть много скриптов, где выгодно использовать <?= $somevar ?> вместо <?php echo $somevar ?>. И потому что короткие теги эха не так плохи, как короткие теги открытого текста, они решили всегда включать короткие теги эха. Потому что теперь разработчики (фреймворки и CMS-es) могут рассчитывать на них (точнее, когда PHP 5.4 становится основной).

Тем не менее, тег open по-прежнему зависит от параметра short_open_tag в вашем php.ini.

Ответ 2

Только короткий тег эха (<?=) включен постоянно, а не короткие открытые теги (<?). Это потому, что короткий тег эха очень удобен, когда вы создаете HTML-шаблоны (или любые другие шаблоны представлений), и без этого вам нужно писать намного больше (например, <?php echo $var; ?> вместо просто <?= $var ?>).

Ответ 3

Примечание.. Начиная с PHP 5.4, короткий тег echo <?= всегда распознается и действителен независимо от параметра short_open_tag.

Все, что это говорит, заключается в том, что <?= всегда действителен, а не <?

Ответ 4

Причина в том, что < ? используется в документах XML, а включение short_open_tags приведет к возникновению ошибок в кодах XML. Но < ?=, как и < ?php, не является открытым тегом XML и безопасен в использовании.