自从我使用了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相比,我的方法有什么缺点?
答案 0 :(得分:0)
首先要做的事情是:将整个模板编写为PHP,然后回显它并不是一个好主意。作为一般的经验法则,如果可以的话,我会避免从PHP回显HTML。原因很多,但主要原因是IDE中缺少语法高亮。
无论如何,代码格式完全取决于个人偏好,但是如果您正在编写这样的模板:
<?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; ?>
......难怪你无法阅读它们。
您可以尝试一些方法,使您的代码更清晰,更易于阅读。同样,这些都取决于您自己的个人偏好,您可能习惯使用其中的部分或全部。
正确格式化HTML,并使用子元素缩进。
在太忙的代码行之间添加空格,特别是在PHP行和HTML行之间。
使用短回声标记语法(<?=
代替<?php echo
)。
将更复杂的PHP值分配给变量,以便您的HTML更易于阅读。
请记住评论您的代码(HTML或PHP),特别是添加HTML评论,以便您可以一目了然地轻松查看模板的各个组件。
示例强>
<?php
$user = $file['User'];
$comments = $file['Document']['comments'];
?>
<!-- User -->
<?php if (!empty($user['email'])) : ?>
<div class="mailto"><?= $this->Html->link($user); ?></div>
<?php endif; ?>
<!-- File Comments -->
<?php if (!empty($comments)) : ?>
<div class="file-comment file-extra column grid_6">
<div class="content"><?= $comments; ?></div>
</div>
<?php endif; ?>