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

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

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

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

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

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

Что это?

4 ответа

Решение

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

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

Тем не менее, короткие открытые теги все еще находятся под влиянием short_open_tag установка в вашем php.ini.

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

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

Все, что это говорит, это то, что <?= всегда действует, а не <?

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

Другие вопросы по тегам