if(...) {
if(...) {
echo <<<EOT
xxxxxx
EOT;
}
}
或
if(...) {
if(...) {
echo <<<EOT
xxxxx
EOT;
}
}
我更喜欢后者,因为它不会破坏代码的结构。
但似乎后者会在大多数编辑中引起突出显示错误。
是否有任何标准规定我们必须写为前者?如果是这样,为什么他们会达到如此不满意的标准呢?
还有什么替代方法可以在php中编写块字符串,这不会像以前那样破坏代码结构吗?真的不满意......
答案 0 :(得分:2)
正如其他人所指出的那样,heredoc语法是严格的,结束语句必须放在它自己的行上,没有空格。
使用heredoc有非常合理的理由,例如,请参阅此SO问题:What is the advantage of using Heredoc in PHP ?
如果你是这种情况,那么如果你想让你的缩进保持一致,那么将块字符串移动到外部文件可能是最好的选择。
heredoc的替代品
如果单引号或双引号字符串包含带换行符的文本,则缩进中的所有空格都会保留在输出中,但在浏览器中会被禁止。
根据您对输出的要求,您可以编写自己的包装函数,例如,如果要在浏览器输出中显示换行符:
if( true ) {
if( true ) {
// Single quoted
$single = 'some
text';
echo $single; // some text
// Double quoted
$double = "some
text";
echo $double; // some text
// Custom function
function block($s) {
return preg_replace('/\s*\n\s*/', '<br/>', $s);
}
echo block("some
text"); // some<br/>text
// In a browser this is shown as:
// some
// text
}
}
最后一个使用block
函数的示例会删除换行符周围的所有空格(包括换行符),并将其替换为<br/>
标记。
答案 1 :(得分:1)
直接来自PHP:
警告请务必注意关闭的行 标识符必须不包含其他字符,分号(;)除外。 这尤其意味着标识符可能不会缩进,并且 在分号之前或之后可能没有任何空格或制表符。
答案 2 :(得分:1)
您可以将其移至外部文件,如:
return <<<"EOF"
Hello $var
EOF;
然后通过include
if(...) {
if(...) {
$var = 'World';
print include 'file.php';
}
}
结果是
Hello World