Извините за глупый вопрос, но я пробежал код, который использовал:
<?=$MAP_OBJECT->printOnLoad();?>
<?=$MAP_OBJECT->printMap();?>
<?=$MAP_OBJECT->printSidebar();?>
Есть ли что-то особенное в <?=
над <?php
или просто <?
?
Извините за глупый вопрос, но я пробежал код, который использовал:
<?=$MAP_OBJECT->printOnLoad();?>
<?=$MAP_OBJECT->printMap();?>
<?=$MAP_OBJECT->printSidebar();?>
Есть ли что-то особенное в <?=
над <?php
или просто <?
?
Вместо того, чтобы говорить о том, что 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 … ?>
. Когда 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.
Это сокращенное обозначение <?php echo .... ?>
, называемое короткие теги. Вы должны избегать их использования, потому что:
<?xml ... ?>
Поэтому вы никогда не должны использовать их снова, также посмотрите:
PHP Short Open Tag: удобный ярлык или короткое изменение безопасности?
<?=
- это короткий тег, который в значительной степени эквивалентен:
<?php echo
Как и в случае с PHP 5.4, этот синтаксис всегда доступен, но в более ранних версиях PHP ему требуется short_open_tag
. Что касается поиска в Stack Overflow, попробуйте code:"<?="
.
Это сокращение для <?php echo $MAP_OBJECT->printOnLoad(); ?>
. Простой способ написать его, когда вы создаете шаблоны и вещи на основе PHP.
Будьте осторожны. Мое понимание (хотя я никогда не сталкивался с этим сам) заключается в том, что сокращенная версия может быть отключена на некоторых серверах.
<?=
- это не одно. Это на самом деле <?
, а затем =
. Как отметил @derekerdmann, это непредвиденная конфигурация.
Дайте следующий вид:
Чтобы исправить все эти ошибочные ответы:
короткие открытые теги не будут удалены или устарели.
добавив это из-за повторяющихся вопросов
aka shortags - альтернативный тег для php, но работает только на серверах, на которых он включен.
Это позволяет вам писать эхо как это
Однако не рекомендуется использовать их и предлагалось удалить или устареть в php5.4 + вместе с глобальными регистрами, безопасным режимом и магическими кавычками и т.д.
Поэтому, хотя вы можете использовать их, они не рекомендуются. 1. Они не переносимы, поскольку серверы должны включать их. 2. Они могут легко привести к коду спагетти, так как вы можете легко интегрировать html в свой файл. 3. При смешивании их с объявлением xml следует использовать специальные методы
Однако они отлично подходят для создания шаблонов наряду с другими сокращенными обозначениями для циклов и условных проверок.
Внутри короткого тега вы не можете писать так.
<?=
$number = "5";
$sum = 15 + "5";
?>
потому что он будет печатать только первый результат как 5.
Внутри открытого тега вы можете написать вот так.
<?php
echo $number ="5";
echo $sum = 15+"5";
?>
Он будет печатать как 5, так и 20
все о синтаксисе.