Являются ли короткие теги PHP приемлемыми для использования? - PullRequest
513 голосов
/ 14 октября 2008

Вот информация согласно официальной документации :

Есть четыре разные пары открывающие и закрывающие теги, которые могут быть используется в PHP. Два из них, <?php ?> и <script language="php"> </script>, всегда доступны. Другие два короткие теги и теги стиля ASP, и может быть включен и выключен из Конфигурационный файл php.ini. В качестве таких, в то время как некоторые люди находят короткие метки и Теги в стиле ASP удобны, они менее портативный, и обычно нет рекомендуемое .

По моему опыту, на большинстве серверов do включены короткие теги. Typing

<?=

гораздо удобнее, чем набирать

<?php echo 

Удобство программистов является важным фактором, поэтому почему они не рекомендуются?

Ответы [ 26 ]

367 голосов
/ 14 октября 2008

Они не рекомендуются, потому что это PITA, если вам когда-либо придется перенести код на сервер, где он не поддерживается (и вы не можете его включить). Как вы говорите, множество общих хостов do поддерживают короткие тэги, но "lot" - это не все. Если вы хотите поделиться своими сценариями, лучше использовать полный синтаксис.

Я согласен с тем, что <? и <?= проще для программистов, чем <?php и <?php echo, но можно выполнять массовую процедуру поиска и замены, если вы каждый раз используете одну и ту же форму (и не бросайте пробелы (например: <? php или <? =)

Я вообще не покупаю читабельность как причину. У большинства серьезных разработчиков есть возможность подсветки синтаксиса.

Как упоминает ThiefMaster в комментариях, начиная с PHP 5.4, теги <?= ... ?> поддерживаются везде, независимо от настроек ярлыков . Это должно означать, что они безопасны для использования в переносимом коде, но это означает, что существует зависимость от PHP 5.4+. Если вы хотите поддерживать pre-5.4 и не можете гарантировать короткие ярлыки, вам все равно нужно будет использовать <?php echo ... ?>.

Также необходимо знать, что теги ASP <%,%>, <% = и тег сценария удалены из PHP 7 </a>. Поэтому, если вы хотите поддерживать долгосрочный переносимый код и хотите перейти на самые современные инструменты, рассмотрите возможность изменения этих частей кода.

171 голосов
/ 15 октября 2008

Я слишком люблю <?=$whatever?>, чтобы отпустить. Никогда не было проблем с этим. Я подожду, пока он не укусит меня в задницу. Серьезно, 85% (моих) клиентов имеют доступ к php.ini в редких случаях, когда они отключены. Остальные 15% пользуются услугами хостинг-провайдеров, и практически у всех они включены. Я люблю их.

140 голосов
/ 20 мая 2011

Начиная с PHP 5.4, ярлык эха является отдельной проблемой от ярлыков, так как ярлык эха всегда будет включен. Теперь это факт:

Так что сам ярлык эха (<?=) теперь безопасен для использования.

80 голосов
/ 22 декабря 2009

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

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

ЕДИНСТВЕННЫЙ действительный аргумент ПРОТИВ использования коротких тегов заключается в том, что они поддерживаются не на всех серверах. Комментарии о конфликтах с XML-документами смешны, потому что, вероятно, вам все равно не следует смешивать PHP и XML; и если вы, вы должны использовать PHP для вывода строк текста. Безопасность никогда не должна быть проблемой, потому что если вы помещаете конфиденциальную информацию, такую ​​как учетные данные для доступа к базе данных, в файлы шаблонов, тогда у вас есть большие проблемы!

Теперь, что касается вопроса о поддержке серверов, по общему признанию, нужно знать об их целевой платформе. Если общий хостинг является вероятной целью, следует избегать коротких тегов. Но для многих профессиональных разработчиков (таких как я) клиент признает (и действительно зависит от факта), что мы будем диктовать требования к серверу. Часто я сам отвечаю за настройку сервера.

И мы НИКОГДА не работаем с хостинг-провайдером, который не дает нам абсолютного контроля над конфигурацией сервера - в таком случае мы могли бы рассчитывать на выполнение гораздо больших проблем, чем просто потеря поддержки коротких тегов. Такого просто не бывает.

Так что да - я согласен, что использование коротких тегов должно быть тщательно взвешено. Но я также твердо верю, что это ВСЕГДА должно быть вариантом, и что разработчик, который знает о своей среде, должен свободно использовать их.

33 голосов
/ 22 октября 2008

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

UPDATE

После небольшой работы с Magento , которая использует длинную форму. В результате я перешел на длинную форму:

<?php and <?php echo

над

<? and <?=

Похоже, небольшой объем работы для обеспечения совместимости.

20 голосов
/ 14 октября 2008

Потому что путаница может генерироваться с декларациями XML. Многие люди согласны с вами.

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

19 голосов
/ 24 апреля 2013

Ниже приводится замечательная схема потока того же самого:

decision making tree of the use of <?=

Источник: похожий вопрос о стеке разработки программного обеспечения

13 голосов
/ 30 мая 2011

http://uk3.php.net/manual/en/language.basic-syntax.phpmode.php имеет множество советов, в том числе:

в то время как некоторые люди находят короткие метки и Теги в стиле ASP удобны, они менее портативный, и, как правило, нет рекомендуется.

и

обратите внимание, что если вы встраиваете PHP в XML или XHTML вам нужно используйте теги <?php ?>, чтобы остаться соответствует стандартам.

и

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

13 голосов
/ 16 августа 2011

В случае, если кто-то еще обращает на это внимание ... Начиная с PHP 5.4.0 Alpha 1 <?= всегда доступен:

http://php.net/releases/NEWS_5_4_0_alpha1.txt

Похоже, короткие теги (а) приемлемы и (б) здесь, чтобы остаться. На данный момент по крайней мере ...

12 голосов
/ 14 октября 2008
  • Короткие теги не включены по умолчанию на некоторых веб-серверах (общие хосты и т. Д.), Поэтому переносимость кода становится проблемой, если вам нужно перейти к одному из них.

  • Читаемость может быть проблемой для некоторых. Многие разработчики могут обнаружить, что <?php привлекает внимание как более очевидный маркер начала блока кода, чем <? при сканировании файла, особенно если вы застряли с основанием кода с HTML и PHP тесно переплетены.

...