2011-07-10 12 views
1

さて、私は質問があります。私はprint <<< ENDの後にechoprintの代わりにEND;をHTMLと変数の後に使用します。私はスピードに影響を及ぼさないようで、コードはちょっと体系的に見えますので、私はこれを使用します。私は他の人が同意しないと確信していますが、それは私の意見です。印刷<<< END;質問

私は現在のプロジェクトを持っており、それが私がHTMLを出力するのに使う主な方法です。これまでのところ問題はありません。

これを使用する際の短所は何ですか?以前はコーダーと話していましたが、実際には使用しない理由はありません。私はそれに何の問題もないので、これに関するアドバイスをいただければ幸いです。

+1

可能な重複:-)に来るわずかなパフォーマンスヒットが、厥になり、次のとおりです:[PHPでヒアドキュメントを使用するには理由があるIdは、以下のことのようなものを好みます?](http://stackoverflow.com/questions/5673269/is-there-a-reason-to-use-heredoc-in-php) – Wylie

+0

@ワイリー:いいえ。その質問は「利点は何か」です。これは「何が欠点か」です。彼らが正反対の質問であることは明らかです! –

+1

tut、tut、純粋なPHPファイルにHTMLはありません! HTMLファイルのPHPのほんの少しは大丈夫です。 –

答えて

2

:別のオプションは一切echoの呼び出しを必要としないプレーンなHTML、PHPへの飛び出しことであろう。これはあまりにも意見ですが、私はそれをはるかに簡単にテンプレートファイル、IEで別の構文を読むために見つける:

<?php if($something): ?> 
    <div id="something"> 
    <?php echo $something->text ?> 
    </div> 
<?php endif; ?> 

そして、このようにして外に切り替えるには、私は限りHTMLが懸念しているとしてヒアドキュメントを使用するために見ることができる唯一の理由です。大量のHTMLを出力する関数がある場合、それらを変更して何らかの方法でファイルを含める必要があります。 IE。あなたはあなたのビューを除いてhtmlを入れ替える必要があり、それらのビューはあなたの関数やモデルを完全に別々にする必要があります。 examplのためにあなたがやるべきこと:

function getSomething($var){ 
    if($var){ 
    $html = <<< HTML 
<div id="something"> 
    $var->text 
</div> 
HTML; 
} 
} 

これはobvioulsy simleの一例であり、実際にこの例では、そんなに悪いイマイチが、HTMLが複雑であれば、それは醜いjsut取得するために開始します。モデルクラスのメソッドの場合は、HTMLがどれほどシンプルであっても単純な悪ではありません。もちろん

getSomething($var, $template = 'something.php') 
{ 
    if($var){ 
    ob_start(); 
    include($template); // $var is accessible in something.php 
    return ob_get_clean(); 
    } 

    return null; 
} 

インクルードは、キャッシングが

+0

+1、私はそれについて忘れてしまった:heredocs内の条件文を評価することはできない。ほとんどのWebアプリケーションは条件付きでたくさんのものをエコーし​​ます。したがって、これはすべてをheredoc形式にすることの大きな欠点です。 –

+0

@ハンス:二重引用符で囲まれた文字列の中の条件文も評価できません。ここでの問題は、ダブル/シングルクォートやHTMLモードよりもheredocを使って文字列を出入りすることが表面的に_messier_であることです。 –

4

説明している構文はheredocです。私が知る限り、heredocとシングルクォートまたはダブルクォートの文字列を使用することにはパフォーマンスの違いはありません。

文字列内で'"をエスケープする必要がないため、Heredocsは構文エラーを防ぐのに役立ちます。私は考えることができる唯一の欠点は、開発者のための読みその困難です

<?php 

... do things ... 

?> 
<div id="result"><?php var_dump($result); ?></div> 
<?php 

... do more things ... 

?> 
+1

heredocもインデントを破壊するので、読みやすさが向上するとは、実際はちょっと主観的です。 – Mike

+0

私にそれの正しい名前を与えてくれてありがとう。私は数年前にこの方法を選び、それを使い続けました。正直言って、それについてはあまり知らなかったのです。私はそれについて他の人に話すとき、彼らは単にそれを避けるように私に言っただけです。これまでのところ、私はそれを使ってプロジェクト全体を構築しており、コードに問題はありませんでした。それは実際には私が他のものに集中できるように私に多くの時間を節約しました。私は、一部のプログラマーがなぜそれを完全に避けるように言ったのか分からなかった。 – Brad45

+1

私はそれが読みやすさを向上させることに同意しなければなりません...マイクはそれが読みにくいIMOになるインデントを破壊すると言います。 – prodigitalson

関連する問題