2012-05-01 2 views
2

Я видел HTML вложен в PHP страницы, написанной в очень многими способами ... некоторые из которых демонстрируются на этой странице: http://austingulati.com/2010/01/many-ways-to-integrate-html-into-php/Недостатки использования EOF?

... Но я очень редко вижу HTML и PHP написанный в унисон следующим образом:

echo <<<EOF 
<h1>Welcome</h1> 
<p>Hello</p> 
<p>{$somePHPVariable}</p> 
EOF; 

Вопрос:

существует фундаментальная проблема с использованием EOF подход, который я должен быть в курсе?

+1

[Heredoc] (http://en.wikipedia.org/wiki/Here_document) –

+0

Отъезд http://stackoverflow.com/questions/5673269/is-there-a-reason-to-use-heredoc- in-php - он должен ответить на ваш вопрос. – Crontab

ответ

5

Heredocs замечательны, если вы создаете HTML и должны вставлять переменные.

Они почитают разрывы строк/интервалы, которые вы вставляете в них (даже если браузер не отображает это), поэтому намного проще создавать хорошо отформатированный HTML-код, а также освободить вас от необходимости избегать цитат при построении строк:

eg сравнение

print("<div class=\"this\">\n\tblah blah\n\t\t<span class=\"that\">blah</span>\n</div>"); 

v.s.

echo <<<EOL 
<div class="this"> 
    blah blah 
     <span class="that"</span> 
</div> 
EOL; 

Их также можно использовать в конкатенационных операциях, например.

$x = "hello"; 
$x .= <<<EOL 
    there, how 
EOL 
$x .= <<<EOL 
    are you? 
EOL; 

в конечном итоге даст $ x значение hello there, how are you?. В основном рассмотрим синтаксис heredoc как ОЧЕНЬ причудливую версию строк с двумя кавычками, без каких-либо недостатков. Единственное ограничение состоит в том, что исходное значение heredoc должно быть на линии само по себе, поэтому нет возможности создать «одну строку» heredoc.

+0

Это само по себе является большим преимуществом по сравнению с другими подходами :) – Jack

5

Это называется heredoc syntax («EOF» может быть любым идентификатором, а не только «EOF»). Это немного более тонко, чем другие синтаксисы строк, и это может быть немного запутанным для людей, которые раньше этого не встречали. Прекрасно прекрасно использовать.

2

Синтаксис Heredoc на самом деле замечательный! Это очень полезно для ситуаций, когда у вас есть данные с большим количеством одинарных кавычек и двойных кавычек.

Я вошел в некоторые подробности об этом раньше здесь: Quoting quotation marks

Один из недостатков к нему я считаю, что это, как правило, чтобы отключить подсветку синтаксиса в редакторах, потому что взгляды редакторе как один большая строка и, следовательно, не будет правильно выделять html внутри.

Другой недостаток не может напрямую вызывать функции из синтаксиса heredoc. Существуют обходные пути, и некоторые из них упоминаются здесь: Calling PHP functions within HEREDOC strings

+1

Выделение синтаксиса проблематично - и тот факт, что терминальный токен должен быть выровнен по левому краю, чтобы работать в противном случае красивым кодом = ( –