#php #tags #comments
#php #Теги #Комментарии
Вопрос:
Недавно я начал использовать сокращенные <?= ?>
теги PHP для отображения переменных и т. Д. В своих PHP-скриптах. Однако я нахожу, хочу ли я затем закомментировать переменную, например <?= //$myVariable; ?>
, я получаю синтаксическую ошибку.
Безопасно ли просто делать это: <?//= $myVariable; ?>
Большое спасибо!
Комментарии:
1. Ссылка на этот пост может быть полезной
2. Привет, Ranijth, спасибо за ссылку выше, я наткнулся на этот пост отдельно, когда решил начать использовать сокращенный оператор echo. Приветствия!
Ответ №1:
Короткий тег
<?= ... ?>
переводится в
<?php echo ...; ?>
Итак, чтобы закомментировать это, вы должны поместить что-то, ...
что всегда отображается как пустое. Вот самое короткое, что я могу придумать:
<?= false amp;amp; ... ?>
Это работает, потому echo false
что ничего не отражает.
Документации, подтверждающей это, нет, так что это может быть старый взлом совместимости, но, похоже, работает следующее:
<?//= ... ?>
и
<?/*= ... */?>
Поскольку они недокументированы, я бы не стал зависеть от них в чем-то важном, но вы могли бы использовать их, если вы просто временно что-то комментируете во время отладки.
Комментарии:
1. Спасибо за ответ, итак, что вы думаете об использовании
<?//= $myVariable; ?>
, безопасны ли эти короткие теги php в данном случае? Или это будет зависеть от конкретной настройки php.ini, и поэтому его следует избегать?2. Я не вижу никаких упоминаний об этом синтаксисе в документации: php.net/manual/en/language.basic-syntax.phpmode.php и php.net/manual/en/language.basic-syntax.comments.php
3. @Barmar, я протестировал ярлык комментария в PhpStorm.
CTRL /
и я заметил, что это то, что он сделал. Но не был уверен, что это хорошая идея.4. И
CTRL ?
добавляет/* ... */
короткий тег. Оба, похоже, работают, но они не поддерживаются какой-либо документацией.
Ответ №2:
Итак, на вопрос о том, почему <?/*=...*/?>
и <?//=...?>
работает, потому что есть функция PHP под названием short_open_tag , которая позволяет пропустить ввод php
после <?
и просто использовать что-то вроде <? echo ...; ?>
. Это можно отключить в INI-файле, и до версии 5.4 короткая рука не работала бы, если бы она не была включена. Итак, пока вы контролируете свой INI-файл, все должно быть в порядке.
НО я только что проверил нашу систему 5.6.31 (она старая, да), но когда для short_open_tag установлено значение false <? ... ?>
, get передается непосредственно клиенту, как если бы это был текст HTML. Итак, возможно, вы просто не видите текст, потому что браузер не отображает его.