【发布时间】:2017-04-27 14:42:41
【问题描述】:
自从我使用 CakePHP 以来,我问自己关于 CTP 文件推荐语法的更深层次的意义,它基本上是一个 HTML 文件,所有 PHP 代码都用标签括起来。我发现这很难阅读,我应该认为 HTML 和 PHP 之间的上下文切换会增加一些性能损失。 将所有输出收集在一个字符串中并在最后回显它不是更快更清晰吗? 但肯定有一些更深层次的意义,只是我没有看到它.. 为了让自己更清楚,这里有一个例子:
CakePHP:
<?php if (!empty($file['User']['email'])): ?>
<div class="mailto"><?php echo $this->Html->link($file['User']); ?></div>
<?php endif; ?>
<?php if (!empty($file['Document']['comments'])): ?>
<div class="file-comment file-extra column grid_6">
<div class="content"><?php echo $file['Document']['comments']?></div>
</div>
<?php endif; ?>
我的做法:
<?php
$out = '';
if (!empty($file['User']['email'])) {
$out .= '<div class="mailto">'.$this->Html->link($file['User']).'</div>';
}
if (!empty($file['Document']['comments'])) {
$out .= '<div class="file-comment file-extra column grid_6">'
.'<div class="content">'.$file['Document']['comments'].'</div>'
.'</div>';
}
echo $out;
?>
所以我的问题是:与 CakePHP 相比,我的方法有哪些缺点?
【问题讨论】:
-
the context switches between HTML and PHP would add some performance penalty- 这不存在。如问题的格式所示,一个明显的缺点是这样做会丢失代码格式。然而问题是off topic, as it is opinion based。 -
这两个代码示例都难以阅读 - IMO。而且我个人认为您的方法更难读。这只是格式和缩进的问题,而不是语言或其语法。推荐阅读:amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/…
-
承认,我没有费心添加换行和缩进。除了添加换行符/缩进之外,您将如何以不同的方式编写它?也许有一种完全不同的方式来做到这一点?欢迎提出建议。
-
这都是基于意见的。但我更喜欢 CakePHP 方法,同时缩进 if 语句和 html。