В чем преимущество использования Heredoc в PHP?

В чем преимущество использования Heredoc в PHP и вы можете показать пример?

Синтаксис здесь doc намного чище для меня, и он действительно полезен для многострочных строк и избегает проблем с цитированием. В тот же день я использовал их для построения SQL-запросов:

$sql = <<<SQL select * from $tablename where id in [$order_ids_list] and product_name = "widgets" SQL; 

Для меня это имеет меньшую вероятность введения синтаксической ошибки, чем использование котировок:

 $sql = " select * from $tablename where id in [$order_ids_list] and product_name = \"widgets\" "; 

Еще один момент – избегать двойных кавычек в строке:

 $x = "The point of the \"argument" was to illustrate the use of here documents"; 

Проблема с вышеизложенным – синтаксическая ошибка (отсутствующая скрытая цитата), которую я только что представил, а не синтаксис документа:

 $x = <<<EOF The point of the "argument" was to illustrate the use of here documents EOF; 

Это немного стиль, но я использую следующие правила для одиночных, двойных и здесь документов для определения строк:

  • Одиночные кавычки используются, когда строка является константой, например 'no variables here'
  • Двойные кавычки, когда я могу поместить строку в одну строку и потребовать переменную интерполяцию или встроенную одинарную цитату "Today is ${user}'s birthday"
  • Здесь документы для многострочных строк, которые требуют форматирования и переменной интерполяции.

Heredoc – отличная альтернатива цитированным строкам из-за повышенной удобочитаемости и ремонтопригодности. Вам не нужно избегать цитат, и (хорошие) редакторы IDE или текстовые редакторы будут использовать правильную подсветку синтаксиса.

ОЧЕНЬ обычный пример: эхо из HTML из PHP:

 $html = <<<HTML <div class='something'> <ul class='mylist'> <li>$something</li> <li>$whatever</li> <li>$testing123</li> </ul> </div> HTML; // sometime later echo $html; - $html = <<<HTML <div class='something'> <ul class='mylist'> <li>$something</li> <li>$whatever</li> <li>$testing123</li> </ul> </div> HTML; // sometime later echo $html; 

Легко читается. Простота в обслуживании.

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

Обновленный ответ для вашего здравого смысла

Конечно, вы не захотите, чтобы SQL-запрос был выделен как HTML. Чтобы использовать другие языки, просто измените язык в синтаксисе:

 $sql = <<<SQL SELECT * FROM table SQL; 

Некоторые IDE автоматически запускают код в heredoc-строках, что делает использование heredoc для xml или html визуально привлекательным.

Мне лично это нравится для более длинных частей, т. Е. XML, так как мне не нужно заботиться о цитировании кавычек и просто вставить XML.

Прежде всего, все причины субъективны.
Это скорее скорее вопрос вкуса, чем причина.

Лично я нахожу heredoc совершенно бесполезным и использую иногда, большую часть времени, когда мне нужно получить некоторый HTML в переменную и не хочу беспокоиться о буферизации вывода, чтобы сформировать сообщение электронной почты HTML, например.

Форматирование не соответствует общим правилам отступов, но я не думаю, что это большое дело.

  //some code at it's proper level $this->body = <<<HERE heredoc text sticks to the left border but it seems OK to me. HERE; $this->title = "Feedback"; //and so on 

Что касается примеров в принятом ответе, это просто обман.
Строковые примеры на самом деле более сжатые, если вы не обманываете их

 $sql = "SELECT * FROM $tablename WHERE id in [$order_ids_list] AND product_name = 'widgets'"; $x = 'The point of the "argument" was to illustrate the use of here documents'; 

Я не знаю, могу ли я сказать, что heredoc – это лень, можно сказать, что делать что-то лень, так как всегда есть более громоздкие способы сделать что-либо.

Например, в некоторых ситуациях вы можете вывести текст со встроенными переменными без необходимости извлекать из файла и запускать замену шаблона. Heredoc позволяет вам отказаться от кавычек, поэтому текст, который вы видите, – это текст, который вы выводите. Ясно, что есть некоторые негативы, например, вы не можете отступать от своего heredoc, и это может разочаровываться в определенной ситуации, особенно если вы придерживаетесь единого синтаксиса, которым я являюсь.