質問に直接回答するには:静的テキストまたはHTMLをエコーしないでください。PHPの外部に置きます。
<?php echo "<p>Hello World</p>"; // Alway wrong. ?>
<p>Hello World</p> <!-- Does the same thing, faster, and is more readable. -->
静的テキストまたは静的htmlを渡すだけであれば、PHPへのエスケープは無駄です。内部のすべてのコード<?php ?>
はPHPに送信され、解釈されます。これは、理由もなくPHPに大量の静的テキストを渡す場合、Webサイトが遅くなり、電力を浪費していることを意味します。(理由がある場合があります。)
ベストプラクティスは、HTMLを使用せず、PHPのみを使用して、ロジックとうなり声をファイルで処理することです。
私がこれをしたいのは、MVCフレームワークを使用する方法です。モデルとコントローラーには純粋なPHPがあり、ビューにはHTMLとPHPが混在しています。MVCフレームワークは必要ありません。HTMLの混合物をテンプレートファイルに貼り付けるだけで、純粋なPHPファイルに含めることができます。
変数(HTMLを含まない)を純粋なPHPファイルで作成したら、HTMLを使用して変数をファイルに渡すことができます。そこだけで、HTMLとPHPを混在させることは問題ありません。しかし、これは重要ですが、HTMLを含むファイルを使用する場合は、PHPを最小限に抑えてください。
幸いなことに、PHPには、htmlと混合したときにPHPを読みやすくするための使いやすいツールが付属しています。
代替構文
ベストプラクティスは、純粋なPHPを記述する場合は通常のPHP構文を使用することですが、PHPとHTMLを混合する場合は代替構文を使用することです。
HTMLのない通常のPHPファイルの場合:
if ($something) {
do_something(); // do_something() shouldn't echo or print.
}
これは純粋なPHPにとっては美しいことですが、HTMLからエスケープする場合には理想的ではありません。特に、閉じブレースは、HTMLの大きな山に現れるときに理解するのが難しいことがよくあります。
あなたの質問に基づいて、HTMLとPHPを混合したファイルに次のように書いたようです。
<?php
if ($something) {
echo '<p>Hello World.</p>';
}
?>
上記の理由により、HTMLをPHPに送信しないようにします。これを次のように行います。
<?php if ($something) { ?>
<p>Hello World.</p>
<?php } ?>
PHPタグからHTMLを取得しましたが、これは改善点です。しかし、さらに先へ進むことができます。
閉じ括弧がどれほど有益でないか気づきましたか?ループを閉じているのか、ifステートメントを閉じているのかはわかりません。上記の例ではこれはささいなことのように思えますが、ループ/エンドループ内のif / endifの中には何十行ものHTMLがしばしばあります。
ベストプラクティスは、PHPとHTMLを混合したファイルでは、開き括弧と閉じ括弧を省略した代替構文を使用することです({ }
)。
<?php if ($something): ?>
<p>Hello world.</p>
<?php endif; ?>
別に(新しい構文の意味論から:
とendif;
代わりに{
して}
)、あなたは2つのことに気づくはずです。
- 繰り返しますが、HTMLとテキストはPHPによって制御されますが、
<?php ?>
タグの外側にあるため、解釈されません。上記の理由により、これは良いことです。
- これは
<?php } ?>
、開いている場所を見つけるのが難しいものを閉じるランダムな中括弧()を含むすべてのPHPである場合よりもはるかに有益です(多くの乱雑なHTMLと混在しているため)。繰り返しますが、ループとifステートメントを含む大きなHTMLファイルを想像してください。何を閉じるかを指定すると、多くのことがわかります。
ループにも同じテンプレートフレンドリーな構文を使用できます。
<?php foreach ($things as $thing): ?>
<li><?php echo $thing; ?></li>
<?php endforeach; ?>
短いタグ
PHPが提供するもう1つの優れたツールは、やはりPHPとHTMLを一緒に使用する場合にのみ使用する短いタグです。php.iniファイルで短いタグをオンにする必要がある場合があります。オンにすると、短いタグによりすべてがさらに読みやすくなります。
短いタグがなければ、書く必要があります<?php echo $something; ?>
が、短いタグでは書くことができ<?=$something?>
、まったく同じ結果になります。
短いタグと代替のPHP構文を組み合わせると、PHP要素を含むエレガントなHTMLファイルを実際に作成できます。最後のループの例(ループ内の一部)を使用すると、短いタグを使用すると以下を削減できます。
<li><?php echo $thing; ?></li>
に
<li><?=$thing?></li>
はるかに読みやすいです。
さらに先に進むことができますか?はい。さまざまなテンプレートシステムを使用すると、次のようなことができます。
<li>{thing}</li>
これは驚くほど読みやすいです。ただし、テンプレートシステムは元の質問(とにかく前に残しました)の範囲外です。