ウェブ|プログラム|テンプレート
大規模な PHP Web アプリケーションを設計したことのある開発者は、おそらく次のような経験があるでしょう。ハイパーテキスト ステートメントの作成、ページのフォーマット、アーティストとしての作業、またはプログラム コードと HTML 静的ページの統合に多くの時間を費やしました。とても時間がかかります。確かに、スクリプト言語を使ったWebアプリケーション開発では、データ処理とデータ表示を分離するのは容易ではありませんが、複数人で連携する場合、データと表示を分離できないと、開発効率や開発効率に大きな影響を及ぼします。専門的な分業。この問題を解決するために、PHP も独自の解決策を提供しています。この記事では主に PHPLIB の Template クラスを紹介します。
1 テンプレート処理クラスの設計
テンプレート処理クラスは主に以下の作業を行う必要があります:
・テンプレートファイルから表示用のHTMLコードを読み込みます。
・テンプレートファイルと実際に生成されたデータを組み合わせて出力結果を生成します。
·複数のテンプレートを同時に処理できます。
·テンプレートのネストを許可します。
·テンプレートの個々の部分の処理を許可します。
上記のタスクを要約すると、テンプレート クラスの設計目標は次のとおりです。表示された HTML コードを複数のテンプレート ファイルから読み取り、これらの表示コード内の動的データが必要な部分を PHP プログラムによって計算されたデータに置き換えて、次のようになります。特定のシーケンシャル出力。このうち交換部品は自由に設定可能です。
ファイルを読み込んで表示用のHTMLコードを読み込みます
テンプレートファイルとデータの組み合わせは定期的な置換を使用します
複数のテンプレートの処理は配列ストレージによって実装されます。
テンプレートのネスティングを実装する主なアイデアは、テンプレートと出力 (中間分析結果) を同等に扱い、両方を置換に使用できることです。
テンプレートファイルにアノテーションを設定し、定期置換時にアノテーションを組み合わせることで部分置換を実現することで、各部品の処理を制御します。
2 テンプレート処理クラスの実装
詳細なコメント付きの合計 345 行のコードは、PHPLib の Template.inc を参照してください。研究と参照のための主な関数をいくつか示します:
1) 関数 set_file ($handle, $filename=" ") 77 行目、ファイルの読み取り
2) 関数 set_var ($varname, $value = "") 119 行目、マッピングの設定data - 変数を置換します
3) 関数 set_block($parent, $handle, $name = "") 96 行目、アノテーションを設定します
4) 関数 subst($handle) 136 行目、データ置換を実行します
5) 関数 parse( $target , $handle, $append = false) 165行目、テンプレートファイルとデータの組み合わせを実行します
6) 関数p($varname) 268行目、処理結果を出力します
注: 私はphp-lib7.2cのTemplateをダウンロードしました。 inc ファイルの 95 行目に「/」がありませんが、追加すると正常に動作します。
3 テンプレート処理クラスの使用
3.1 最も基本的な例
簡単のため、テンプレートファイル、テンプレートを使用した PHP ファイル、およびテンプレート処理クラスファイルがすべて同じディレクトリに配置されていると仮定します。 PHPLIB では、ihtml サフィックスをテンプレート ファイルのサフィックスとして使用するのが習慣です。
使用するテンプレート ファイルは次のとおりです:
{OUT} | コンテンツ |
{NUM } | {BIGNUM} |