<? php вместо <?

Почему я должен использовать <?php вместо <? в моем PHP скрипт?

Ответ 1

Две основные причины, позволяющие избежать короткого открытия тега

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

Ответ 2

Существует два способа запуска PHP

<?php

и

<?

PHP также включает

<?=

Но это будет печатать переменную за ней, так как ее сокращение для эха.

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

Ответ 3

Короткие теги <?<?=) могут быть отключены. Длинная версия <?php<?== <?php echo) работает повсюду.

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

Ответ 4

Оба семантически одинаковы. <? - просто ярлык для полного синтаксиса.

Ответ 5

Я лично предпочитаю <? отключать по двум причинам

  • Стандарты кодирования PHP во многих крупных проектах PHP рекомендуют отключать его
  • Создает проблемы, если вы создаете документы XML (документы xml начинаются с <?xml version="1.0" encoding="UTF-8" ?>)
  • (бонус) <?php более читабельна и заметна, чем <?.

Ответ 6

Чтобы добавить к каждому объяснение, что короткие теги не должны использоваться, потому что они могут быть отключены (или, возможно, даже удалены из будущих версий PHP), основное обоснование коротких тегов, которые должны быть устаревшими, заключается в том, что они недопустимы. XML "Инструкции по обработке", в то время как теги <?php. Таким образом, шаблоны PHP с тегами <?php ... ?> могут быть допустимыми XML-документами, а те, которые используют короткие теги, не являются.

Ответ 7

Следует отметить, что некоторые серверные конфигурации PHP не поддерживают один или другой из коробки. Например, мой веб-сервер не поддерживает <? но поддерживает < php

Ответ 8

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

a) Я никогда не был в ситуации, когда я не мог включить короткие теги. Обычно они включены по умолчанию.

b) В большинстве ситуаций <? не путается с <?xml, потому что они анализируются на разных уровнях стека.

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

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

Ответ 10

Поддержка синтаксиса короткой формы <?/<?= основана на параметре short_open_tag в php.ini. Если вы размещаете свою собственную базу кода, это тривиально для включения. Однако на общем/управляемом веб-узле вы можете не контролировать этот параметр.

Таким образом, для максимальной переносимости вы должны использовать синтаксис длинной формы.