好的,我有一个问题。我使用print <<< END
后跟END;
后的html和变量,而不是echo
和print
。我使用它是因为它似乎对速度没有影响,而且在我看来代码看起来更有条理。我相信其他人会不同意,但这只是我的意见。
我有一个当前项目,这是我用来输出HTML的主要方法。到目前为止没问题。
使用它有什么缺点?我以前曾和编码员谈过这件事,但他们从来没有给我一个不使用它的理由。我对此有任何建议表示感谢,因为我没有遇到任何问题。
答案 0 :(得分:4)
您描述的语法称为heredoc。据我所知,使用heredocs和单/双引号字符串之间没有性能差异。
Heredocs通常可以帮助防止语法错误,因为不需要在字符串中转义'
和"
。另一个选择是跳出PHP到纯HTML,这不需要echo
次调用:
<?php
... do things ...
?>
<div id="result"><?php var_dump($result); ?></div>
<?php
... do more things ...
?>
答案 1 :(得分:2)
我能想到的唯一缺点是开发人员难以阅读。这也是意见,但我发现在模板文件中阅读替代语法要容易得多,即:
<?php if($something): ?>
<div id="something">
<?php echo $something->text ?>
</div>
<?php endif; ?>
就这样切换进出是唯一的原因我可以看到使用heredoc就html而言。如果您有输出大量html的函数,那么您应该更改它们以某种方式包含文件。 IE浏览器。除了在视图中,你需要切换进出html,这些视图应该完全独立于你的功能或模型。例如,你应该这样做:
function getSomething($var){
if($var){
$html = <<< HTML
<div id="something">
$var->text
</div>
HTML;
}
}
这显然是一个简单的例子,实际上这个例子并不是那么糟糕,但如果HTML更复杂,它开始变得丑陋。对于模型类的方法,无论HTML多么简单,它都只是简单的邪恶。我更喜欢以下内容:
getSomething($var, $template = 'something.php')
{
if($var){
ob_start();
include($template); // $var is accessible in something.php
return ob_get_clean();
}
return null;
}
当然,include会导致轻微的性能损失,但是缓存的来源是: - )