Heredocs - Использование одного и того же имени дважды? Зачем вообще их называть? - PullRequest
1 голос
/ 27 января 2010

Играя с heredocs в PHP, я понял, что имя heredoc не должно быть уникальным. Таким образом:

$a = <<<EOD
Some string
EOD;

$b = <<<EOD
A different string
EOD;

правильно и ведет себя точно так, как вы ожидаете.

Это плохая практика по какой-либо причине? Зачем heredoc вообще нужно имя / метка (EOD выше), поскольку вы не можете ссылаться на него по имени?

Ответы [ 3 ]

3 голосов
/ 27 января 2010

Что если указанная вами строка содержит EOD?

Вы можете выбрать идентификатор, чтобы избежать конфликтов с фрагментом текста, который вы используете в качестве строки.

2 голосов
/ 27 января 2010

Вы не ссылаетесь на как таковое, но оно действует как идентификатор, указывающий конец в heredoc. например,

$a = <<<EOD
EOA
EOB
EOC
EOD;
0 голосов
/ 05 марта 2010

Одним из преимуществ является то, что редакторы, такие как vim, могут применять подсветку синтаксиса к heredoc, названным с помощью HTML, EOHTML, EOSQL, EOJAVASCRIPT, что делает их намного красивее для работы с ...

$html = <<<EOHTML

<p class="foo">foo</em>

EOHTML;

$sql = <<<EOSQL

SELECT DISTINCT(name) FROM foo ORDER BY bar;

EOSQL;

$js = <<<EOJAVASCRIPT

foo = { bar: 'bar'; }

EOJAVASCRIPT;
...