2012-05-03 6 views
16

私は、コードの多くのスニペットを見た、と私は人々がif声明の中で次の2つの方法を使用することができることを見出した:PHPの中括弧またはコロンendif文 - どちらがパフォーマンスとコードの互換性が優れていますか?

方法1:

<?php 
    if ($condition) { 
    // Do this 
    } 
?> 

方法2:

<?php 
    if ($condition): 
    // Do this 
    endif; 
?> 

どの方法がPHPコンパイラとPHPのバージョンとの互換性があるのですか?それとも、どちらの方法にも違いはありませんか?

+3

コインを入れて、個人的には –

+3

JavaScriptシンタックスに近いので、私は#1をより使いやすくしています。私は通常2を混ぜています。 – Gerard

+0

私はコーディングで両方を使う傾向があり、私のコードを効果的にインデントして、私のコードで分裂を見ることができるからです。 –

答えて

20

ほとんどの場合、代替(endif)構文がビュースクリプトで使用されます。中括弧は1文字を占めるだけなので、if文の終わりを知ることは難しいでしょう。ファイルの最後にいるときは、ifかforeachの終わりかどうかは分かりません。例えば:私が今まで見てきたように

<?php if ($condition): ?> 

    <div>a huge block of html</div> 

<?php endif; ?> 
+7

誰もノックするつもりはありませんが本格的なIDEを持つことで、無償で利用可能なコード折りたたみ(およびブロック識別)をサポートするいくつかのエディタが確かにあります。 –

+1

関数が非常に長く、終了中の中括弧を開かれた中括弧に関連付けることができない場合、中括弧とalt構文が問題の中で最も少なくなります。 –

4

このalternative syntaxは、多分もっとよく知られている構文とは決して異なるものではありません。 2つを混ぜてはいけません。 while,for,foreach、およびswitchについても同様の構文が存在します。

一般的に、わかりやすさやチームの好みに基づいて、好みの構文を選択する必要があります。

isset($value) AND print($value); 
6

彼らは両方とも全く同じである:あなたが以下のように論理積演算子を誤用「if文」を参照し始めたときに本当にあなたをスローする可能性がありますどのような

です。どちらを使用するかは、組織のスタイルガイドを参照してください。

+0

はい、それよりも互換性が低いか遅いと思われます。明らかに、私は間違っているかもしれません。 – think123

+5

"代替"構文をサポートしていないPHPのバージョンを実行している場合は、コードを変換する必要があるよりも大きな問題**があります。 –

0

は、私のアプリでは、それらの間の違いはありませんが、それはすることが可能ですので、あなたがルールなしにそれらをMIXTます場合は、問題の多くを持つことができますいくつかのエラーを取得し、あなたは中括弧を検索しますが、あなたは中括弧を使用していません。 排他的な構文を使用します。

+0

回答には十分ではありません。しかし、コメントの方がいい –

0

唯一の違いは、非常に大きなドキュメントやプロジェクトで見られます。私の会社は、非常に大規模なプロジェクトに取り組む中でendifではなくbraceを使用します。ファイルサイズを比較すると、中括弧を使用する利点があります。ファイルサイズが小さいほどファイルの読み込み速度が速くなりますので、できる限りすべてのバイトを減らしています。私たちは、テスト中に識別して、プロダクション用のコメントをすべて削除することを簡単にするために、中括弧をコメントアウトします。

関連する問題