Вместо того, чтобы говорить о том, является ли short_open_tags устаревшим или нет, мы должны говорить о преимуществах и недостатках при использовании коротких открытых тегов:
Преимущества
Использование коротких открытых тегов <?
вместе с <?=
короче и, вероятно, легче писать, чем стандартные открывающие теги <?php
и <?php echo
соответственно.Это очень удобно при использовании PHP непосредственно в шаблоне.(Вероятно, это также причина, по которой PHP имеет альтернативный синтаксис для управляющих структур .)
Недостатки
Требуется специальная конфигурация
При использовании короткого открытиятеги, для которых требуется, чтобы short_open_tags был включен.Если вы или ваш веб-хостинг решите отключить short_open_tags , ваше приложение, вероятно, больше не будет работать, и у вас могут возникнуть серьезные проблемы с безопасностью.Поскольку, если short_open_tags отключен, распознаются только стандартные открывающие теги <?php
, а все, что находится внутри коротких открывающих тегов, обрабатывается как обычный текст.(См. Также сообщение в блоге , на которое ссылается ответ Сарфраза Ахмеда.)
Это требование делает ваше PHP-приложение менее переносимым, если вы хотите писать приложения, предназначенные не только для вас.Именно поэтому многие рекомендуют не использовать короткие открытые теги (включая руководство по 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 не считается устаревшей.В противном случае в руководстве будет указано это явно.Кроме того, Расмус Лердорф, изобретатель PHP, написал в ответ на вопрос «Правда ли, что short_open_tag устарел в PHP 6?» Во внутреннем списке рассылки , что было несколько причин не удалять short_open_tags в PHP 6:
Именно поэтому мы решили не удалять их в PHP 6.