<...?> Правильно ли написан PHP и будет ли он работать всегда?
Я случайно обнаружил, что
<?php ... ?>
можно сократить до
<? ... ?>
Это плохая идея? В некоторых случаях? В каких случаях они? Есть ли еще стенографические примеры? Мне известны краткие примеры, включающие условные операторы, но я не нахожу их легче читать.
Пожалуйста, свяжите меня, если на этот вопрос ответили в другом месте, но я не смог найти его с помощью поиска. Возможно я не использую правильные ключевые слова.
4 ответа
Это сокращение было доступно в течение очень долгого времени, но его использование не рекомендуется (и в настоящее время отключено по умолчанию) из-за различных несовместимостей с другими языками - неоднозначность со способностью ASP принимать <? x ?>
и с различными конструкциями XML, два очевидных примера.
Не используйте его.
В отличие от <?= x ?>
сокращение (эквивалентно <?php echo x ?>
) имеет всплеск популярности и включен по умолчанию начиная с PHP 5.4, потому что он не страдает от тех же проблем.
Как всегда, обратитесь к документации для канонической информации о таких вещах.
Сокращенные теги включены только в определенных настройках. Они обескуражены. См. Руководство по PHP для тегов: http://www.php.net/manual/en/language.basic-syntax.phptags.php
PHP также допускает короткие открытые теги (которые не приветствуются, потому что они доступны, только если они включены с помощью директивы конфигурационного файла short_open_tag php.ini, или если PHP был настроен с параметром --enable-short-tags.
Что касается других сокращений, других не существует. <?= ?>
Сокращение может рассматриваться как один, хотя используется только для вывода переменной (как упоминалось в другом ответе на этот вопрос). Пропуск закрытия ?>
вроде как один. Это удобно для документов, которые не содержат ничего кроме кода PHP. Эта техника также упоминается в ручной записи, которую я связал выше.
Это будет работать? В некоторых случаях. В PHP доступно несколько открывающих тегов, посмотрите здесь. Но вы должны быть осторожны, так как это зависит от конфигурации php (обычно это /etc/php.ini или /etc/php/php.ini). Есть вариант short_open_tag = On
, если он не включен, код будет отображаться в представлении и не будет выполняться как код php.
Как сказал blakeo_x, сокращение действует только в том случае, если он включен в конфигурационном файле PHP. Это не рекомендуется, потому что вам может потребоваться запустить его на другом сервере, где сокращение не включено. Поэтому попытайтесь придерживаться более длинной версии <?php
вместо.