2016-12-12 5 views
4

私はCakePHPを使って以来、基本的にすべてのPHPコードがタグで囲まれたHTMLファイルであるCTPファイルの推奨構文のより深い意味について尋ねました。私はこれを読むのが非常に難しいと思っています。私は、HTMLとPHPの間のコンテキストの切り替えによってパフォーマンスが低下すると考えるべきです。 文字列内のすべての出力を収集して最後にエコーする方が、より迅速かつ明確になるでしょうか? しかし、確かにいくつかのより深い意味があり、ちょうど私は自分自身をより明確にするために... それを見ていないことを、ここでは例です:CakePHPテンプレート(ビュー)の推奨構文

の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に比べて私のアプローチの欠点は何ですか?

+3

'コンテキストは、HTMLとPHPを切り替えるいくつかのパフォーマンスのpenalty'を追加する - これは存在しません。質問の書式設定に示されているように、明らかな欠点の1つは、コードの書式設定を失うことです。しかし、質問は[意見に基づいているので、トピックから外しています](http://stackoverflow.com/help/on-topic)。 – AD7six

+1

どちらのコード例も読みにくいです - IMO。私は個人的にあなたのアプローチがさらに悪いと思っています。それは、言語やその構文ではなく、書式設定とインデントの問題です。推奨読書:https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882 – burzum

+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; ?>