web-dev-qa-db-ja.com

PHP:if-else条件でhtmlを印刷するより良い方法

同じコードの次の2つの形式を参照してください

最初:

<?php if(some_condition){
?>
    <li><a target="_blank" href="example.com/channel1/"  class="xyz">If content</a></li>
<?php
}else{
?>
    <li><a target="_blank" href="example.com/channel2/"  class="xyz">Else Content</a></li>

<?php?>
}?>

第二:

<?php 
    if(some_condition){
       echo '<li><a target="_blank" href="example.com/channel1/"  class="xyz">If content</a></li>';
    }
    else{
        echo '<li><a target="_blank" href="example.com/channel2/"  class="xyz">Else Content</a></li>';
    }
 ?>

私の質問は、次のうちどれがより良い選択肢であるかです。2つ目はより読みやすいことを知っています。ただし、同じページに非常に多くの条件がある場合は、パフォーマンスの点で優れています(2つのパフォーマンスの差はごくわずかです)。

標準のパフォーマンスと、2つの異なる形式について私が知っておくべきことについて、あなたの見解/ポイントを知りたいのですが。

(そして、単一のif-elseブロックと複数のif-elseブロックしかない場合、どちらが優先されるか)

ありがとう

3
kadamb

最初の例は、保守しやすいので、2つの悪の方が良いと主張します。 HTMLはそのままで記述され、文字列リテラルとしてコード化されません。

テンプレートやその他の方法を使用してビジネスロジックとHTMLプレゼンテーションを分離すると、通常、コードの保守性が向上します。

2
Mazaryk

いつものように、短く、おそらく最も正しい答えは、状況によって異なります。

拡大するために:

質問に示されているその短い2つのスニペットの場合、それは純粋に味に関するものです。どちらか一方に強い技術的な理由はありません。より大きなコンテキストでの質問は、「ロジックが少しあるHTMLテンプレートか、ロジックが多くHTMLが少しあるコードパーツなのか」です。

もちろん、それがほとんどロジックである場合、Twigまたはその他のようなテンプレートライブラリを調べて、ロジックを出力からより大きく分離することをお勧めします。これにより、出力形式のテストと変更がより簡単になります。

2
johannes