Разница в том, что на некоторых серверах первый и последний примеры могут быть отключены с помощью short_open_tag
. Поэтому, если вы хотите, чтобы ваш код был максимально переносимым, вам следует использовать полный <?php
, в противном случае при переносе кода на новый сервер вы можете обнаружить, что он работает не так, как ожидалось. Использование коротких тегов также может привести к конфликтам, если вы попытаетесь сделать объявления типа <?xml
. Что касается безопасности, использование коротких тегов теоретически может быть опасным, если кто-то решит отключить short_open_tag
; код, использующий этот тег, будет в таком случае простым текстом и транслируется всем (подробнее см. в комментариях)
Что касается вашего другого вопроса, то опускание закрывающих тегов - это предотвращение случайного вывода пробела в браузер, так как это может испортить некоторые скрипты, особенно те, которые пытаются вывести заголовки любого типа. Вот почему Руководство по программированию Zend рекомендует не закрывать ваши теги PHP.
Теперь, когда я все это убрал, если я не работаю над чем-то открытым исходным кодом, я лично использую короткие открытые теги и закрываю все свои теги PHP. Это потому, что я обычно контролирую свое окружение и придерживаюсь мнения, что а) <?=
слишком удобно, и б) если вы открываете что-то, вы должны закрыть его. Однако «лучшие практики» не совсем согласны с этим.