在 PHP 中使用 heredoc 的优势是什么?[已关闭]

2022-08-30 06:22:36

在PHP中使用heredoc有什么好处,你能举个例子吗?


答案 1

heredoc 语法对我来说要干净得多,它对于多行字符串和避免引用问题非常有用。回到过去,我曾经使用它们来构建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"
  • 此处的文档适用于需要格式化和变量插值的多行字符串。

答案 2

Heredoc是引用字符串的绝佳替代品,因为它增加了可读性和可维护性。您不必转义引号,(好的)IDE或文本编辑器将使用正确的语法突出显示。

个非常常见的例子:从PHP内部回显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;

推荐