Подтвердить что ты не робот

В чем разница между открытыми тегами PHP "<? =" И "<? Php" / "<?"?

Извините за глупый вопрос, но я пробежал код, который использовал:

<?=$MAP_OBJECT->printOnLoad();?>
<?=$MAP_OBJECT->printMap();?>
<?=$MAP_OBJECT->printSidebar();?>

Есть ли что-то особенное в <?= над <?php или просто <??

4b9b3361

Ответ 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.

Ответ 2

Это сокращенное обозначение <?php echo .... ?>, называемое короткие теги. Вы должны избегать их использования, потому что:

  • Кажется, что они отключены на некоторых серверах.
  • Они могут вызвать у вас проблемы с точки зрения безопасности.
  • Они могут создавать конфликт с инструкциями обработки, такими как <?xml ... ?>

Поэтому вы никогда не должны использовать их снова, также посмотрите:

PHP Short Open Tag: удобный ярлык или короткое изменение безопасности?

Ответ 3

<?= - это короткий тег, который в значительной степени эквивалентен:

<?php echo 

Как и в случае с PHP 5.4, этот синтаксис всегда доступен, но в более ранних версиях PHP ему требуется short_open_tag. Что касается поиска в Stack Overflow, попробуйте code:"<?=".

Ответ 4

Это сокращение для <?php echo $MAP_OBJECT->printOnLoad(); ?>. Простой способ написать его, когда вы создаете шаблоны и вещи на основе PHP.

Будьте осторожны. Мое понимание (хотя я никогда не сталкивался с этим сам) заключается в том, что сокращенная версия может быть отключена на некоторых серверах.

Ответ 6

Чтобы исправить все эти ошибочные ответы:

короткие открытые теги не будут удалены или устарели.

Ответ 7

добавив это из-за повторяющихся вопросов

aka shortags - альтернативный тег для php, но работает только на серверах, на которых он включен.

Это позволяет вам писать эхо как это

Однако не рекомендуется использовать их и предлагалось удалить или устареть в php5.4 + вместе с глобальными регистрами, безопасным режимом и магическими кавычками и т.д.

Поэтому, хотя вы можете использовать их, они не рекомендуются. 1. Они не переносимы, поскольку серверы должны включать их. 2. Они могут легко привести к коду спагетти, так как вы можете легко интегрировать html в свой файл. 3. При смешивании их с объявлением xml следует использовать специальные методы

Однако они отлично подходят для создания шаблонов наряду с другими сокращенными обозначениями для циклов и условных проверок.

Ответ 8

Внутри короткого тега вы не можете писать так.

<?=
$number = "5";
$sum = 15 + "5";
?>

потому что он будет печатать только первый результат как 5.

Внутри открытого тега вы можете написать вот так.

<?php
 echo $number ="5";
echo $sum = 15+"5";
?>

Он будет печатать как 5, так и 20

все о синтаксисе.