私のPHPコードをHTMLコード内またはPHP内のHTML内に記述するためのベストプラクティスは何ですか?
HMTL内のPHP:
<p class="lead">Welcome to the <?= COMPANY_NAME ?> website.</p>
PHP内のHTML:
<?php
echo '<p class="lead">Welcome to the ' . COMPANY_NAME . ' website.</p>';
?>
パフォーマンスに違いはありますか?ベストプラクティスはどれですか。のように、これは最もよく維持されるコードを生成します。
またCOMPANY_NAME
はそのように定義されています:
define("COMPANY_NAME", 'MyCompany');
何について:
言語の混合は良い考えではありません。JavaScriptをHTMLに、またはHTMLをJavaScriptに、JavaScriptをPHPに、またはHTMLをPythonまたはRuby SQL。
なぜそうしないのですか?
なぜなら、異なる言語は通常、異なる層に対応するからです。
PHPはビジネスロジックを扱います。 HTMLは、ビジネスオブジェクトのプレゼンテーションを扱います。したがって、2つのレイヤーがあります。1つはオブジェクトを生成します。もう1つは、これらのオブジェクトの疑似XML表現を構築します。
同様に、JavaScriptはインタラクションを扱い、CSSはコンテンツのプレゼンテーションを扱います。インタラクションを変更する場合は、.htmlファイルを開かず、.phpファイルも開かないでください。jsファイルまたは.coffeeファイルを開きます。
同じファイル内にロジックを混在させると、コードの保守がますます難しくなることにすぐに気付くでしょう。製品にリベートを適用する方法を変更したい場合、HTMLとPHPステートメントを組み合わせたHTMLと、HTMLを含むPHPコードの組み合わせを15分かけて閲覧します。 。
技術的には、PHPによってHTMLとPHPを混在させることができるという事実は無関係です。この機能は歴史的な理由で利用できますが、今後は使用しないでください。
それであなたは何をすべきですか?
あなたが探しているものはtemplatesと呼ばれています。使用するフレームワークに応じて、テンプレートがビューにある通常MVCの形式ですでに使用可能であるか、または Smarty などのサードパーティのテンプレートエンジンを使用する必要がある場合があります。 =。
どちらの場合も、考え方は同じです。 PHPコードは、HTMLと非常に単純なロジックを含むテンプレートから完全に分離されています。エンティティに対する単純なループ、情報の条件付き表示の条件などです。PHPコードの準備ができたら、テンプレートエンジンを呼び出して、いくつかの情報を渡します。エンジンは特定のテンプレートを使用して最終出力(多くの場合HTMLですが、他の形式も可能)を作成して、ユーザーに送信します。
テンプレートを使用することで、ビジネスロジックと、テンプレートを介してこのロジックに与えるフォームを厳密に分離することができます。ある日、PHPコードの1行を変更することなく、これらすべてのテンプレートをスローして他のテンプレートを作成できます。または、モバイルバージョンのWebサイト用に多数のテンプレートを作成することもできます。
追加の利点は、HTMLに悩まされないことです。テンプレートを適用する代わりに、Webサイトの実際のWebページに実質的に1:1で基づくAPIを作成する必要がある場合は、テンプレートエンジンに送信されるオブジェクトをJSONにシリアル化します。実質的にゼロの努力で、API機能をアプリに追加します。これは、PHPとHTMLを混在させた場合、深刻な書き換えなしでは不可能でした。
この種の質問に対する明確な答えを得るよりも、スンニ派とシテ派の違いを解決できる可能性が高くなります。
私自身は、Reactのコンポーネントの概念とPHPのヒアドキュメント構文が好きです。
class CompanyComponent
{
public function __construct($company)
{
$this->company = $company;
}
protected function escape($string)
{
return htmlspecialchars($string, ENT_COMPAT | ENT_HTML5, 'UTF-8');
}
public public function render()
{
$companyName = $this->escape($this->company['name']);
return <<<EOT
<p class="lead">Welcome to the {$companyName} website.</p>
EOT;
}
}
$companyComponent = new CompanyComponent(['name'=>'Trump']);
echo $companyComponent->render();
最も読みやすいのはphpのhtmlですが、ほんの少しです。ファイルを2つの部分に分割する必要があります。トップのロジック。ここではすべての変数を準備しますが、htmlは準備しません。
下部には、変数とループを1つまたは2つ含むhtmlを配置しますが、ロジックはほとんどまたはまったくありません。
もちろん、これではそれほどうまく拡張できません。大規模なプロジェクトでは、おそらくmvcフレームワークを使用する必要があります。