ウェブ|プログラム|テンプレート
大規模な 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 サフィックスをテンプレート ファイルのサフィックスとして使用するのが習慣です。
使用するテンプレート ファイルは次のとおりです:
現在時刻は {currenttime} です!
注: テンプレート ファイルは通常の HTML ファイルと似ていますが、唯一の違いは、「{}」で囲まれていることです。 " は、テンプレート処理クラスで置き換えることができる動的コンテンツを持つ変数です。
次に、テンプレート処理クラスを使用して上記のテンプレートを処理します:
//Template クラスを導入します
include("template.inc");
//置換する必要があるデータを取得します
$timeNow =date(" Y-m-d H:i:s",time());
//テンプレート クラスをインスタンス化します
$template= new Template();
//test.ihtml テンプレートをロードします
$template-> set_file(" handle1","test.ihtml");
//テンプレート内の現在時刻を $timeNow の値に置き換えます
$template->set_var("currenttime",$timeNow);
//実際の実行テンプレート操作
$template->parse("output","handle1");
//最終結果を出力します
$template->gt;p("output");
?>
注: PHPLIB Template クラスのみを使用したい場合は、ファイル ヘッダーに Template.inc クラスを含めるだけです。
Template オブジェクトを作成するときは、新しいテンプレート ("/htdocs/apps/templates/") などのテンプレート ファイルのパスを指定できます。デフォルトは現在のパスです。
3.2 テンプレートのネストとブロック設定
次の例は PHPLIB リファレンス マニュアルから引用したもので、より包括的です。ここで説明する必要があるのは、ブロックを設定する目的はネストとは関係がないということですが、この例には両方が含まれています。よくお読みください。ブロック設定は、この状況を回避するためのものです。本来はテンプレート ファイル (固定ページ) で完了できるコンテンツを部分的にループする必要があるため、ループされたコンテンツの一部を抽出して別のテンプレート ファイルに作成します。考えてください。ブロック設定を使用しない場合、この例では 3 つのテンプレート ファイルが必要ですか?
テンプレートファイル1、page.ihtml
{PAGETITLE}
{OUT} | コンテンツ |
模板文例2,box.ihtml
{NUM } | {BIGNUM} |

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
