нужно поместить комментарии кода внутри heredoc - PullRequest
7 голосов
/ 15 апреля 2011

Ну, я не могу добавить комментарии внутри блока heredoc в моем файле foo.php:

echo <<<_HEREDOC_FOO

       // okay this comment was intended to explain the code below but it
       // is showing up on the web page HTML sent to the browser

      <form action="foo.php" method="post">
      <input type="submit" value="DELETE RECORD" /></form>

_HEREDOC_FOO;

Работает ли форма, конечно (кстати, приведенный выше код формы сильно усечен для ради моего вопроса здесь).

Но проклятый комментарий (okay this comment was..blah blah blah) появляется в браузере тоже. Это проявляется в браузер, как написано выше:

// okay this comment was intended to explain the code below but it
// is showing up on the web page HTML sent to the browser

Перестановки на комментариях, которые я пробовал:

// <--  
// -->

и ....

<-- //
--> //

FAIL в обоих случаях, чтобы я мог комментировать внутри heredoc.

Итак, как, черт возьми, я могу прокомментировать мой код в моих heredoc s?

Ответы [ 4 ]

8 голосов
/ 15 апреля 2011

Это по замыслу.Как только вы становитесь своим наследником, ВСЕ, что вы вводите до конца, рассматриваются как часть одной длинной строки.Лучше всего было бы сломать ваш HEREDOC, оставить комментарий, а затем начать новую эхо-строку

echo <<<_HEREDOC_FOO
    text text text
<<<_HEREDOC_FOO;
//Comments
echo <<<_HEREDOC_FOO
    text text text
<<<_HEREDOC_FOO;

Как уже упоминал кто-то, вы можете делать комментарии HTML, но они все равно будут видны всем, кто просматривает вашиисходный код

8 голосов
/ 08 мая 2012

Вы можете передать строку комментария в качестве параметра переменной функции.

function heredocComment($comment)
{
    return "";
}

$GLOBALS["heredocComment"] = "heredocComment";

echo <<<_HEREDOC_FOO

   {$heredocComment("
   okay this comment was intended to explain the code below but it
   is showing up on the web page html sent to the browser
   ")}

  <form action="foo.php" method="post">
  <input type="submit" value="DELETE RECORD" /></form>

_HEREDOC_FOO;
2 голосов
/ 15 апреля 2011

Попробуйте:

echo <<<_HEREDOC_FOO

       <!-- okay this comment was intended to explain the code below but it
            is showing up on the web page html sent to the browser -->

      <form action="foo.php" method="post">
      <input type="submit" value="DELETE RECORD" /></form>

_HEREDOC_FOO;

теперь это комментарий HTML

0 голосов
/ 07 января 2014

Самый простой способ сделать это - использовать ту же тактику, что и SeppoTaalasmaa, но затем короче:

$comment = function($str) {return '';};
echo <<<_HEREDOC_FOO

       {$comment('okay this comment was intended to explain the code below but it
       is showing up on the web page html sent to the browser')}

      <form action="foo.php" method="post">
      <input type="submit" value="DELETE RECORD" /></form>

_HEREDOC_FOO;

Просто добавьте первую строку, определяющую $comment, и вы сможете вставитькомментарии в следующем heredoc таким образом.Это также будет работать, если вы не определяете функцию в глобальной области видимости.

...