PHP機能のテンプレートエンジン
Web開発において、テンプレートエンジンは欠かせないものです。動的データとテンプレート ファイルを混合して、最終的な HTML コードを生成できます。 PHP言語はWeb開発でよく使われる開発言語の1つで、当然ながら優れたテンプレートエンジンが多数あります。中でも、PHP の機能を利用して実装されたテンプレート エンジンは、シンプルで使いやすいだけでなく、追加のライブラリや拡張機能を必要としません。
この記事では、PHP 関数を使用して簡単なテンプレート エンジンを実装する方法を紹介します。
1. テンプレート エンジンの実装原理
テンプレート エンジンの実装原理は非常に単純です: プレースホルダーを使用してテンプレート ファイル内の動的データを置き換え、プレースホルダーをコード内の実際のデータに置き換えます。 。
たとえば、プレースホルダーを含むテンプレート ファイル template.html
:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{$title}</title> </head> <body> <h1>{$title}</h1> <p>{$content}</p> </body> </html>
where、{$title}
および { $content }
は、置換する必要がある動的データを表すプレースホルダーです。
PHP コードでは、テンプレート ファイルを読み取り、プレースホルダーを解析するコードは次のとおりです。
$data = array( 'title' => '标题', 'content' => '内容' ); $template = file_get_contents('template.html'); foreach ($data as $key => $value) { $template = str_replace('{$'.$key.'}', $value, $template); } echo $template;
このコードは、まずテンプレート ファイルの内容を読み取り、プレースホルダーを実際のデータに置き換えます。生成された HTML コードを置き換えて、最終的に出力します。
2. PHP 関数を使用してテンプレート エンジンを実装する
再利用と統合を容易にするために、テンプレート エンジンの実装を関数にカプセル化できます。以下は簡単な実装です:
function render_template($template_file, $data) { $template = file_get_contents($template_file); foreach ($data as $key => $value) { $template = str_replace('{$'.$key.'}', $value, $template); } return $template; }
この関数は 2 つのパラメータを受け取ります。$template_file
はテンプレート ファイルへのパスを表し、$data
は動的データを表します。交換する必要があります。関数の戻り値は、生成された HTML コードです。
この関数を呼び出すためのサンプル コード:
$data = array( 'title' => '标题', 'content' => '内容' ); $html = render_template('template.html', $data); echo $html;
3. テンプレートの継承を使用して複雑なテンプレートを実装する
複雑なテンプレートの場合、テンプレートの継承を使用して実装する必要がある場合があります。テンプレートの継承は、複数のテンプレート ファイルを完全なテンプレート ファイルにマージできるテンプレートの再利用メカニズムです。
以下は、テンプレート継承を使用して実装された例です: base.html
と page.html
という 2 つのテンプレート ファイルがあるとします。 はページ フレーム全体を含むテンプレート ファイル、
page.html はページ コンテンツを含むテンプレート ファイルです。
base.html ファイルの内容は以下の通りです。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{$title}</title> </head> <body> <div id="header"> <h1>{$site_name}</h1> </div> <div id="content"> {% block content %}{% endblock %} </div> <div id="footer"> © 2020 {$site_name} </div> </body> </html>このうち、ページ内のタイトルやWebサイト名などをプレースホルダとして使用します。ページ コンテンツの一部を使用します
{% block content %}{% endblock %} これを含めるということは、コンテンツのこの部分がサブテンプレートで使用されることを意味します。
page.html ファイルの内容は以下の通りです。
{% extends "base.html" %} {% block content %} <h2>{$title}</h2> <p>{$content}</p> {% endblock %}このうち、use#は
{% extends "base.html" で指定されています。 " %} ##base.html
は親テンプレートとして機能し、{% block content %}
および {% endblock %} までのページ コンテンツ パーツのテンプレートが含まれています
、親で使用できるようにします。コンテンツのこの部分は、テンプレートで制御およびカスタマイズされます。 最終的に生成されるページのサンプル コードは次のとおりです。
$data = array( 'title' => '页面标题', 'content' => '页面内容', 'site_name' => 'My Site' ); $html = render_template('page.html', $data); echo $html;
レンダリング プロセス中に、
page.html テンプレート ファイルが最初に読み込まれます。 base.html
が親テンプレートとして使用されていることが判明したため、引き続き base.html
テンプレート ファイルを読み込みます。親テンプレート ファイルを読み込むとき、{% block content %}
と {% endblock %}
がページ コンテンツ部分の定義に使用されるため、子テンプレートの ## は#{% block content %} と
{% endblock %} の内容は、次の
{% block content %}{% endblock %} の部分に置き換えられます。親テンプレート。
4. 結論
以上がPHP関数用のテンプレートエンジンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。