在 PHP 中使用 heredoc 的优势是什么?[已关闭]
在PHP中使用heredoc有什么好处,你能举个例子吗?
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"
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;