为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
人到中年有点甜 2019-07-06 15:40:50
在PHP中使用Heredoc有什么好处?使用赫雷多克在PHP中,您能给出一个示例吗?
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

对我来说,这里的doc语法更简洁,它对于多行字符串和避免引用问题非常有用。以前我经常用它们来构造SQL查询:

$sql = <<<SQLselect *
  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 = <<<EOFThe point of the "argument" was to illustrate the use of here documents
EOF;

它有点风格,但我将以下规则用作用于定义字符串的单文档、双文档和此处文档的规则:

  • 单株

    当字符串是常量时使用引号,如

    'no variables here'

  • 双倍

    引用时,我可以将字符串放在单行上,并需要变量内插或嵌入单引号。

    "Today is ${user}'s birthday"

  • 这里

    需要格式化和变量内插的多行字符串的文档。


查看完整回答
反对 回复 2019-07-06
?
慕神8447489

TA贡献1780条经验 获得超1个赞

由于增加了可读性和可维护性,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 laterecho $html;

容易读懂。易于维护。

另一种方法是重复引用的字符串,这些字符串最终包含转义引号,IDE不会突出显示该语言的语法,这会导致可读性差,维护难度更大。

更新答复你的常识

当然,您不希望看到SQL查询突出显示为HTML。要使用其他语言,只需更改语法中的语言:

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


查看完整回答
反对 回复 2019-07-06
  • 3 回答
  • 0 关注
  • 814 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信