在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