<...?> Правильно ли написан 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 вместо.

Другие вопросы по тегам