PHP echo vs PHP короткие теги

Являются ли они равными в безопасности? Мне сообщили, что использование

<?=$function_here?> 

был менее безопасным и замедлял время загрузки страницы. Я строго склонен к использованию эха.

Каковы преимущества / недостатки?

<? и <?= называются короткими открытыми тегами и не всегда включены (см. директив short_open_tag ) с PHP 5.3 или ниже (но поскольку PHP 5.4.0, <?= всегда доступен).

На самом деле, в файле php.ini-production, поставляемом с PHP 5.3.0, они по умолчанию отключены:

 $ grep 'short_open' php.ini-production ; short_open_tag short_open_tag = Off 

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

<?php , с другой стороны, не может быть отключен – так что безопаснее использовать этот, даже если он длиннее для записи.

Кроме того, что короткие открытые теги не обязательно включены, я не думаю, что есть большая разница.

Эхо обычно лучше использовать, потому что …

  1. Он поддерживает хороший стиль программирования.
  2. Его нельзя отключить в php.ini (короткие теги могут быть)
  3. Короткие теги будут удалены в PHP 6)

Но они, как правило, одинаковы. Смотрите также:

  1. Являются ли PHP короткие теги приемлемыми для использования?
  2. Как эхо и печать отличаются в PHP?

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

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

http://php.net/manual/en/language.basic-syntax.phpmode.php :

Начиная с PHP 5.4, короткий тег echo всегда распознается и действителен независимо от параметра short_open_tag .

short_open_tag Off или On больше не имеет значения.

Итак, теперь вы можете без проблем разместить такие теги в своих шаблонах:

  <?= (($test) ? "val1" : "val2") ?> 

Сейчас официально, «короткий тег эха» – это нечто совсем иное, чем «короткий тег».

Просто для рекламы другого источника PSR: http://www.php-fig.org/psr/psr-1/

PHP-код ДОЛЖЕН использовать длинные теги или теги короткого эха; он НЕ ДОЛЖЕН использовать другие варианты тегов.

с указанием:

  <?php ?> and <?= ?> 

Так почему бы им просто не удалить опцию, чтобы отключить короткий открытый тег и позволить ему быть включен по умолчанию.

Это ОЧЕНЬ опасный шаг PHP. Причина в том, что если вы наделите существующий код короткими тегами на нем на сервере PHP6, и кто-то просмотрит эту страницу, они получат исходный код, загруженный в свой браузер, который вы можете просмотреть. Это может серьезно убить PHP.

Вы должны использовать <\? = И попросите свой sysadmin / host включить short_open_tags, у него нет никаких минусов, которые будут отключены, а также нет замедления, синтаксический анализатор ищет <? так же, как он ищет <\ php внутри индекса, бинарный поиск (возможно,

Кроме того, уже на PHP 5.5 <\? = Будет включен по умолчанию и в долгосрочной перспективе <\? = Будет предпочтительнее, если <?? Php echo semi устарел.

Если еще не доволен … Немного поискового робота помогает много = D