在PHP中使用Heredoc有什么好处?

在PHP中使用Heredoc有什么好处,并且你能展示一个例子吗?


这里的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's是引用字符串的绝佳替代方案。 您不必转义引号和(好)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不会突出显示该语言的语法,这会导致可读性差和维护更困难。

    为您的常识更新了答案

    当然,你不希望看到一个高亮显示为HTML的SQL查询。 要使用其他语言,只需在语法中更改语言即可:

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

    一些IDE会自动使用heredoc字符串中的代码 - 这使得使用heredoc for xml或html具有视觉吸引力。

    我个人喜欢它的更长的部分即XML,因为我不必关心引用引号字符,并可以简单地粘贴XML。

    链接地址: http://www.djcxy.com/p/10019.html

    上一篇: What is the advantage of using Heredoc in PHP ?

    下一篇: Can't use method return value in write context