В чем разница между открытыми тегами PHP "

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

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

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

8 ответов


вместо того, чтобы говорить о том,short_open_tags устарел или нет мы должны говорить о преимуществах и недостатках при использовании коротких открытых тегов:

преимущества

использовать короткие теги <? вместе с <?= короче и, вероятно, легче писать, чем стандартные открывающие теги <?php и <?php echo соответственно. Это очень удобно при использовании PHP непосредственно в шаблоне. (Это, вероятно, также причина, почему PHP имеет альтернативный синтаксис управляющих структур.)

недостатки

требуется определенная конфигурация

при использовании коротких открытых тегов вы должны иметь short_open_tags включено. Если вы или ваш хостинг-провайдер решили отключить short_open_tags, ваше приложение, вероятно, больше не будет работать, и у вас могут возникнуть серьезные проблемы с безопасностью. Потому что если short_open_tags отключено, только стандартные открывающие теги <?php распознаются, и все внутри коротких открывающих тегов обрабатывается как обычный текст. (См. также блоге ссылка в ответе Сарфраза Ахмеда.)

это требование делает ваше приложение PHP менее портативным, если вы стремитесь писать приложения, которые не только для вас. Вот почему многие рекомендуют не использовать короткие открытые теги (включая руководство по PHP):

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

начиная с PHP 5.4 <?= всегда доступен, независимо от . <? с другой стороны требует, чтобы опция была включен.

конфликты с инструкциями по обработке 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?"в списке рассылки internals что было несколько причин не удалить short_open_tags в PHP 6:

что является одной из причин, по которой мы решили не удалять их в PHP 6.


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

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

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

PHP короткий открытый тег: Удобный ярлык или короткое изменение безопасности?


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

<?php echo 

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


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

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


<?= Это не одно и то же. Это на самом деле <? а то = . Как упоминал @derekerdmann, это не рекомендуемая конфигурация.

дать следующий вид:


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

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


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

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

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

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

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

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

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


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

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

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

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

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

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