我以前从未见过这样的东西.所以,这让我困惑了一段时间.但现在我有时理解并使用它.所以,经过简短的经验,任何人都可以告诉我你的PHP中使用Heredoc Notation的优缺点是什么?
$stringval = <<<MYHEREDOC
just creating variable here. nothing more.
MYHEREDOC;
Run Code Online (Sandbox Code Playgroud)
就个人而言,你如何使用这个PHP功能?这是一种不好的编码方式还是好方法?
现在有两种类型的"Heredoc:"
""会在创建时将任何变量转换为它们的值.这对于在您需要的位置放置精确的间距/返回非常有用(不需要\n或\ t).''将不转换任何变量和存储只文本值.这可以在类变量的默认值中使用(与heredoc不同).Heredoc示例:
$value = 5;
$string = <<<EOL
The number is $value
EOL;
// The number is 5
Run Code Online (Sandbox Code Playgroud)
Nowdoc示例:
$value = 5;
$string = <<<'EOL'
The number is $value
EOL;
// The number is $value
Run Code Online (Sandbox Code Playgroud)
编辑: 我能想到的唯一缺点是结尾字符(在例子中,EOL)必须以0空格开头.在嵌套函数中,这很难记住并且看起来很难看:
function foo() {
if ($bar) {
$string = <<<LINE
Hey, how is it going, $name.
This is a great test of Heredoc and Nowdoc.
Blah blah blah, go upvote me!
LINE;
}
}
Run Code Online (Sandbox Code Playgroud)
99%的时间我使用它,它用于SQL查询,例如:
$sql = <<<END
SELECT *
FROM sometable
WHERE value > 100
ORDER BY name
END;
Run Code Online (Sandbox Code Playgroud)
我发现在源代码中发现这样的查询更容易,并将它们复制并粘贴到运行它们的东西中.你的旅费可能会改变.注意:您可以使用普通字符串执行多行操作.我倾向于避免这种情况,因为第一行与其他行的缩写不同.
就我而言,最大的"专业人士"是你不需要逃避引用.这特别是标记的问题.决定自己哪个更容易阅读.假设:
$name = 'foo';
$type = 'text';
$value = 'Default value';
Run Code Online (Sandbox Code Playgroud)
$html = '<input type="' . $type . ' name="' . $name . '" value="' . $value . '">';
Run Code Online (Sandbox Code Playgroud)
$html = "<input type=\"$type\" name=\"$name\" value=\"$value\">";
Run Code Online (Sandbox Code Playgroud)
$html = <<<END
<input type="$type" name="$name" value="$value">
END;
Run Code Online (Sandbox Code Playgroud)
注意:在版本2中,您当然可以使用单引号作为属性值来解决转义问题,但重点是您必须担心这样的事情.我个人不喜欢在标记中混合属性引用类型.
| 归档时间: |
|
| 查看次数: |
2709 次 |
| 最近记录: |