Ответ 1
Вместо того, чтобы говорить о том, что short_open_tags устарел или нет, мы должны говорить о преимуществах и недостатках при использовании коротких открытых тегов:
Преимущества
Использование коротких открытых тегов <?
вместе с <?=
короче и, вероятно, легче писать, чем стандартные открывающие теги <?php
и <?php echo
соответственно. Это очень удобно при использовании PHP непосредственно в шаблоне. (Возможно, это также причина, по которой PHP имеет альтернативный синтаксис для структур управления .)
Недостатки
Требуется конкретная конфигурация
При использовании коротких открытых тегов вам необходимо включить short_open_tags. Если вы или ваш веб-хостинг-провайдер решили отключить short_open_tags, ваше приложение, вероятно, больше не будет работать, и вы можете столкнуться с серьезными проблемами безопасности. Поскольку, если short_open_tags отключен, распознаются только стандартные открывающие теги <?php
, и все внутри тегов с коротким открытием рассматривается как обычный текст. (См. Также сообщение в блоге, на которое ссылается ответ Сарфраза Ахмеда.)
Это требование делает ваше приложение PHP менее портативным, если вы хотите писать приложения, которые не только для вас. Thata также почему многие рекомендуют не использовать короткие открытые теги (в том числе руководство PHP):
Примечание. Использование коротких тегов следует избегать при разработке приложений или библиотек, предназначенных для перераспределения, или развертывании на серверах PHP, которые не находятся под вашим контролем, поскольку короткие теги могут не поддерживаться на целевой сервер. Для переносимого, распространяемого кода обязательно используйте короткие теги.
Начиная с PHP 5.4 <?=
всегда доступен независимо от опции short_open_tags
. <?
, с другой стороны, требуется, чтобы опция была включена.
Конфликты с инструкциями обработки XML
Другая проблема заключается в использовании инструкций XML-обработки, например <?xml … ?>
. Когда short_open_tags включен, вы не можете использовать их непосредственно в своем коде, но вам нужно использовать PHP для его вывода:
Если вы хотите использовать PHP в сочетании с XML, вы можете отключить эту опцию, чтобы использовать
<?xml ?>
inline. В противном случае вы можете распечатать его с помощью PHP, например:<?php echo '<?xml version="1.0"?>'; ?>
.
В противном случае PHP задохнется на xml
в <?xml
.
Теперь некоторые последние слова об устаревании: В настоящее время short_open_tags не устарел. В противном случае в руководстве будет указано это явно. Кроме того, Rasmus Lerdorf, изобретатель PHP, написал в ответ , что было несколько причин не удалять short_open_tags в PHP 6:
Это одна из причин, по которой мы решили не удалять их в PHP 6.