微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CakePHP模板的推荐语法(视图)

自从我使用Cake PHP之后,我就问自己对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相比,我的方法有哪些缺点?

解决方法

首先要做的事情是:将整个模板编写为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; ?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐