Помимо лени, есть ли веская причина не использовать ‹? = Для вывода переменных PHP?

Возможный дубликат:
В чем разница между открытыми тегами PHP« ‹? =» и «‹? php »/« ‹?»?

Вместо того, чтобы вводить:

<?php echo $foo; ?>

Я видел это написанным

<?= $foo; ?>

Но я часто задавался вопросом, какой риск / непрактичность в этом? Просто любопытно. Спасибо!


person andyg1    schedule 26.10.2011    source источник
comment
Вы также можете пропустить точку с запятой во втором стиле.   -  person ceejayoz    schedule 26.10.2011
comment
@ceejayoz, вы также можете пропустить его в первом стиле   -  person Explosion Pills    schedule 26.10.2011


Ответы (5)


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

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

person Mr. Llama    schedule 26.10.2011
comment
В PHP5.4 и выше синтаксис <?= доступен всегда. - person ceejayoz; 26.10.2011
comment
Ха, это интересно узнать. Я должен иметь это в виду. - person Mr. Llama; 26.10.2011

Второй вариант увеличивает читаемость. Первый обеспечивает переносимость на другие системы.

Кроме этого, никакой разницы нет ...

person Dennis    schedule 26.10.2011

Это не переносно. Для его отключения есть параметр конфигурации до 5.4, поэтому, если вы переместите свой скрипт на сайт, где он отключен, он сломается.

Кроме того, на мой взгляд, это менее явно. Разницу между <?= func() ?> и <? func(); ?> легко упустить, но она важна.

person hair raisin    schedule 26.10.2011
comment
В PHP5.4 и выше синтаксис <?= доступен всегда. - person ceejayoz; 26.10.2011
comment
Абсолютно верно. Также относится ко всем укороченным ‹? теги. Я всегда использую ‹? Php на всякий случай. - person jcrowson; 26.10.2011

Вы можете использовать <? и <?= только в том случае, если короткие теги включены при работе с PHP. Фактическая причина не использовать его заключается в том, что он несовместим с объявлением xml. Если вы пытаетесь вывести xml с расширением php и у вас включены короткие теги, вам нужно сделать что-то вроде <<??>? .. Я полагаю, вы можете просто отобразить строку.

person Explosion Pills    schedule 26.10.2011
comment
Это была причина, по которой я однажды услышал, но не мог точно вспомнить, какой эффект это произвело. - person andyg1; 26.10.2011

Я не понимаю всех этих разговоров о переносимости.

ВСЕГДА существует проблема переносимости.
Не может быть apache - поэтому не используйте mod_rewrite.
Не может быть PDO - поэтому не используйте подготовленные операторы.
Не может быть mysql - поэтому не используйте сложные запросы.
Не может быть PHP - поэтому простой HTML - наиболее совместимый формат, никогда не используйте что-либо еще из-за проблем с переносимостью!

person Your Common Sense    schedule 26.10.2011
comment
Если бы я мог сделать все, что мне нужно, без использования php и набрав всего 7 дополнительных символов, держите пари, я бы это сделал! Проблема переносимости в том, что это всегда компромисс. В случае с короткими тегами дополнительная работа настолько тривиальна, что делает ее бессмысленной, IMO - person hair raisin; 26.10.2011
comment
@ Col.Shrapnel: Не то же самое. Если нет php, установите его. Если вы хотите начать использовать xml или переместить свои php-скрипты на сервер, который его использует, вам придется много переписывать ... - person Dennis; 26.10.2011
comment
@ Деннис ЧТО? начать использовать XML? Я использую его полностью. Что не так с XML? - person Your Common Sense; 27.10.2011