Каков правильный способ закомментировать отображаемую переменную PHP с использованием сокращенной нотации?

#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. Итак, возможно, вы просто не видите текст, потому что браузер не отображает его.