PHPテンプレートエンジンの原理は何ですか?

coldplay.xixi
リリース: 2023-03-01 20:22:02
オリジナル
3205 人が閲覧しました

PHP テンプレート エンジンの原理は、ビュー層とモデル層を分離するための効果的なソリューションであり、フロント エンドとバック エンド間の分業とコラボレーションの向上を可能にします。これは、古典的な MVC モデルに由来しています。 , [モデル レイヤ-ビュー レイヤ-コントロール [コントローラ モデル]。これにより、同じプログラムで異なる式を使用できるように M コードと V コードが分離されます。

PHPテンプレートエンジンの原理は何ですか?

php テンプレート エンジンの原理:

1. テンプレート エンジンの起源

テンプレート エンジンのアイデアは、古典的な MVC モデル、つまりモデル層 - ビュー層 - コントローラー モデルから来ています。 MVC はもともとデスクトップ プログラムに存在し、M はデータ モデル、V はユーザー インターフェイス、C はコントローラーを指します。 MVC を使用する目的は、M コードと V コードを分離して、同じプログラムで異なる表示形式を使用できるようにすることです。

Web の普及に伴い、このモデルは Web 開発に導入されました。このとき、データ生成とデータ表示の分離を実現するのが、通称テンプレートと呼ばれるV(ビューレイヤー)です。初期のビューは通常、HTML 要素によってインターフェイスを制御していました。インターネットの発展に伴い、いくつかの新しいプレゼンテーション技術 (Flex など) が普及しました。MVC はデータとプレゼンテーションを分離し、一連のデータを複数のプレゼンテーション層で使用できます。ロジック層のコードを変更する必要はありません。たとえば、ブログ投稿リストのデータは M 層 (モデル層) で生成でき、ロジックを変更することなく、さまざまなプレゼンテーション層テクノロジを使用して、従来の Web ページ、RIA アプリケーション、およびモバイル アプリケーションでデータを表示できます。レイヤーコード フロントエンドとバックエンドの分離。

さらに、AJAX テクノロジの人気と Jquery ライブラリの広範なアプリケーションにより、HTML、JavaScript、および PHP コードの初期の混合記述の状況が変化しました。 AJAX技術の適用により、データの要求、生成、表示が分離され、プレゼンテーション層(V)とコード層の分離が促進されます。

テンプレート エンジンは、ビュー レイヤーとモデル レイヤーを分離するための効果的なソリューションであり、フロント エンドとバック エンド間の分業とコラボレーションの向上を可能にします。 PHP 開発は、フロントエンドとバックエンドの混合から、Smarty に代表されるテンプレート エンジンの強力な推進、そして今日の自然回帰に至るまで、いくつかの開発段階を経て、PHP テンプレートの存在の必要性さえ疑問視されています。エンジン。

PHP でテンプレート エンジンを使用する必要がありますか?テンプレートエンジンの原理は何ですか?今日、Smarty がこれほど人気が​​あり、PHP コミュニティで多くの論争を引き起こしているのはなぜでしょうか?これらは次に説明する問題です。

2 コード階層化の考え方

PHP は、軽量で柔軟なスクリプト言語として、開発サイクルが短く、変更が速い Web 開発に非常に適しています。ユーザーエクスペリエンス、ニーズ、ビジネスを重視します。 PHP 開発の初期には、PHP コードと HTML が混在するのが一般的であり、データベース操作、論理的判断、HTML コード生成、さらには Javascript コードさえもコードの随所に見られます。小規模なプロジェクトの場合、このコーディング方法で要件を迅速に完了できます。しかし、プロジェクトが拡大するとフロントエンドのロジックはますます複雑化し、完全に混在した書き方ではコードの可読性の悪さや後のメンテナンスのしにくさなどの問題が必ず発生します。

PHP 開発の初期の頃は、次のように書くかもしれません:

<html>
<head>
<meta http-equiv="content-type"content="text/html;charset=utf-8">
<title>最原始的PHP编码风格 - 李苦李</title>
</head>
<body>
<table>
<tr>
<td>ID</td>
<td>姓名</td>
</tr>
<?php
mysql_connect("localhost","admin","password")or
die("Could not connect:".mysql_error());
mysql_select_db("user_db");
$result= mysql_query("select id,username from user");
while($row= mysql_fetch_array($result)) {
echo"<tr><td>".$row[&#39;id&#39;]."</td><td>"
.$row[&#39;username&#39;]."</td></tr>";
}
mysql_free_result($result);
?>
</table>
<?php
//其他功能模块
?>
</body>
</html>
ログイン後にコピー

明らかに、上記のコードは、可読性、保守性、コードの再利用性の点で非常に劣っています。データの生成と表示を分離する方法を見つける必要がありますが、通常、最も簡単に考えられる方法は、データベースと対話するコードを別のファイルに置き、データを表示する部分を別のファイルに置くことです。次のコードに示すように、新しいファイル data.php を作成し、データを取得します。

<?php
mysql_connect("localhost","admin","password")or
die("Could not connect:".mysql_error());
mysql_select_db("user_db");
$result= mysql_query("select id,username from user");
while($row= mysql_fetch_array($result)) {
$data[] =$row;
}  
mysql_free_result($result);
?>
ログイン後にコピー

これら 2 つの方法はどちらも PHP コードと HTML コードの分離を実現しませんが、次のコードと比較します。 2 番目の方法 最初のアプローチは、データ取得とデータ表示の分離を実現します。 2 番目の処理方法では、ファイルの 1 つがデータベースとの対話、データの取得と処理を特に担当します。その後、データを表示するために別のファイルに渡されますが、表示を担当するこのファイルは、ループ、判定、出力などのいくつかの単純な論理演算を実行するだけです。明らかに、第 2 の処理方法は、第 1 の処理方法よりも保守が容易です。

2 番目の処理メソッドについては、HereDoc 構文を使用してより簡潔にすることもできます。コードは次のとおりです:

<?php
foreach($dataas$value) {
echo<<< TM
<tr><td>$value[id]</td><td>$value[username]</td></tr>;
TM;
}
?>
ログイン後にコピー

2 番目の処理メソッドは、元の PHP テンプレート メカニズムです。現在一部の PHP プログラムで使用されているテンプレート メカニズムは、そのシンプルさ、柔軟性、PHP の構文と使用習慣への準拠、学習コストの低さによって特徴付けられています。欠点は、構成可能性、キャッシュ、テンプレート ファイルを PHP 構文から独立させるなど、一部の高度な機能を実装できないことです。今日はこれをここに書きますが、次の記事でこれらの問題を次々に解決していきます。

関連する学習の推奨事項: PHP プログラミングの入門から熟練度まで

以上がPHPテンプレートエンジンの原理は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート