PHP echo short tag & lt;? =? & Gt; который также имеет ключевое слово эха в нем [дубликат]

Вы можете увидеть этот пример .

// Is this element visible onscreen?
var visible = $(#element).visible( detectPartial );

detectPartial:

  • Истина: весь элемент виден
  • false: часть элемента видима

visible - логическая переменная, которая указывает, является ли элемент видимым или нет.

60
задан Homework 17 August 2012 в 10:48
поделиться

7 ответов

<? и <?= называются короткими открытыми тегами и не всегда включены (см. директиву 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, с другой стороны, не может быть отключено - так что это безопаснее всего использовать этот, даже если он длиннее для записи.

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

94
ответ дан Jonathan Leffler 21 August 2018 в 05:44
поделиться
  • 1
    Возможно, использование GD или CURL или PHP вовсе не является хорошей идеей, потому что они внешние модули и могут быть отключены на некоторых хромых хостинг-провайдерах? Это полная BS, они почти всегда включены. – Slawek 16 January 2012 в 12:11
  • 2
    Учитывая, что они отключены в конфигурации по умолчанию, я думаю, что они будут включаться все реже и реже ;; учитывая, что не использовать их просто / легко ... ну, вы, конечно, не можете использовать любой синтаксис, который вы хотите, я просто надеюсь, что вам не придется развертывать ваше приложение на сервере, который имеет конфигурацию по умолчанию для этого директива ;-) – Pascal MARTIN 16 January 2012 в 23:16
  • 3
  • 4
    У меня, к сожалению, нет цифр, чтобы поддержать мою теорию, но я бы не принял шанс 1/40 на этот момент (и, фактически, я не являюсь, и я работаю в компании, в которой мы самостоятельно настраивать наши серверы и не зависеть от службы внешнего хостинга) ;; Я должен добавить, что PHP 5.4 не выпущен (пока - это должно быть через несколько дней / недель) , и для установки на 1/40 серверов на нем потребуется несколько месяцев ( не говоря уже о времени, которое потребуется, чтобы установить его на 50% из них ...) – Pascal MARTIN 17 January 2012 в 07:34

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

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

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

  1. Являются ли короткие короткие слова PHP допустимыми для использования?
  2. Как эхо и печатать разные в PHP?
32
ответ дан Community 21 August 2018 в 05:44
поделиться
  • 1
    какие?! 6 удаляет их? хромой соус! если я отвечаю за сервер, я не забочусь о переносимости. <?= намного приятнее, чем <?php echo – mpen 6 September 2009 в 21:31
  • 2
    Хуже всего: & lt; script language = & quot; php & quot; & gt; & gt; ... & lt; / script & gt; – mauris 7 September 2009 в 02:59
  • 3
    Отвращение сообщества php к коротким тегам просто сбивает меня с толку; удаление их вообще n php6 - это просто окончательное доказательство того, что команда разработчиков php - это орехи. & lt;? = $ foo & gt; & gt; настолько чище в шаблоне, что & lt;? php echo $ foo; ? & GT; – DGM 7 September 2009 в 06:13
  • 4
    Причина php6 просто не соответствует действительности – Your Common Sense 19 March 2010 в 10:24
  • 5
    PHP6 или любой другой, который будет вызываться следующей версией, будет NOT удалять короткие открытые теги. Во всяком случае, они будут отключены по умолчанию. – Gordon 7 September 2010 в 12:25

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

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

18
ответ дан Frank 21 August 2018 в 05:44
поделиться

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

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

с указанием:

 <?php ?> and <?= ?>
4
ответ дан leopold 21 August 2018 в 05:44
поделиться

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

Кроме того, уже на PHP 5.5 & lt; \? = будет включен по умолчанию и в долгосрочной перспективе & lt; \? = будет предпочтительнее, в то время как & lt; \? php echo semi debrecated.

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

-5
ответ дан Lucas 21 August 2018 в 05:44
поделиться

http://php.net/manual/en/language.basic-syntax.phpmode.php состояния:

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

short_open_tag Выключить или включить больше не имеет значения.

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

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

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

11
ответ дан Phil 21 August 2018 в 05:44
поделиться

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

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

0
ответ дан Ritey 21 August 2018 в 05:44
поделиться
  • 1
    Значит, ты говоришь, что ничто никогда не должно быть устаревшим? PHP предупреждает о коротких тегах уже пару лет. Если они устарели, разработчики, которые проигнорировали это предупреждение, будут подниматься на свою собственную петарду. – dnagirl 27 April 2010 в 15:29
  • 2
    Нет, я не говорю, что ничего не следует осуждать. Но подумайте о последствиях в реальной жизни, а не в мире мечтателей программистов. Сколько php-страниц там, в которых содержатся файлы конфигурации с паролями и т. Д., Внутри которых будет внезапно отображаться все, кто просматривает. Да, это плохое программирование, но это позволяет нанести вред больше, чем доверенность программиста, и это потенциально может привести к полному недоверию к PHP со стороны общественности в целом. И ВСЕХ из них можно было бы избежать, продолжая разрешать короткие теги или не пропускать содержимое шорттага пользователю. – Ritey 30 April 2010 в 10:07
  • 3
    Будьте на своих головах ....! – Ritey 30 April 2010 в 10:11
  • 4
    Вы уверены, что это произойдет? – pbreitenbach 29 October 2010 в 22:23
  • 5
    OP представляет собой & lt;? = Форму короткого открытого тега. Самое большее, что вы увидите, будет & lt;? = $ VariableName? & Gt ;. – Iain Collins 14 February 2011 в 12:36
Другие вопросы по тегам:

Похожие вопросы: