Каков «правильный» способ начать и закрыть оператор PHP? - PullRequest
5 голосов
/ 16 мая 2009

Есть ли разница или связанный с этим риск открытия со следующими вариациями PHP?

<? echo "hello world!"; ?>

<?php echo "hello world!"; ?>

<?="hello world!"?>

Кроме того, необходимо ли закрыть все сценарии с помощью ?>

Ответы [ 3 ]

15 голосов
/ 16 мая 2009

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

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

Теперь, когда я все это убрал, если я не работаю над чем-то открытым исходным кодом, я лично использую короткие открытые теги и закрываю все свои теги PHP. Это потому, что я обычно контролирую свое окружение и придерживаюсь мнения, что а) <?= слишком удобно, и б) если вы открываете что-то, вы должны закрыть его. Однако «лучшие практики» не совсем согласны с этим.

6 голосов
/ 16 мая 2009

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

Даже если это работает в то время, если вы не контролируете хостинг, никаких гарантий нет.

2 голосов
/ 16 мая 2009

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

Более того, как часто PHP, который вы пишете, должен быть переносимым, а не работать только в вашем конкретном приложении?

Единственное реальное соображение (imho) - это инструкции по обработке XML, которые могут быть проблемой, если вы выводите XHTML, хотя я никогда не видел причины делать это вместо строгого или переходного HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...