ホームページ > バックエンド開発 > PHPチュートリアル > PHP テンプレート エンジンを手動で開発する 1 (35)

PHP テンプレート エンジンを手動で開発する 1 (35)

WBOY
リリース: 2016-08-08 09:23:37
オリジナル
911 人が閲覧しました

このテンプレートは TPL と呼ばれ、smarty テンプレート エンジンをモデルにしています。

私たちがテンプレートと呼ぶものは Web テンプレートであり、主に HTML マークアップで構成される言語で記述されたページですが、動的に生成されたコンテンツ (タグの解析) を表現する方法も備えています。テンプレート エンジンは、テンプレートから HTML コードを生成し、含める動的コンテンツを指定できるソフトウェア ライブラリです。

1 テンプレートエンジンの特徴:

1. 分離を促進: システムの可読性と保守性を向上させます。

2. 分業を促進する: プログラマーとアーティストが自分の設計に集中できるようにします。
3. PHP よりも解析が簡単: コンパイルされたファイルとキャッシュされたファイルは読み込みが速く、占有するリソースが少なくなります。

4. セキュリティの強化: テンプレート設計者が安全でない操作を実行する能力を制限し、誤った削除や誤ったアクセスを回避できます。

2 テンプレート エンジン製品:

PHP には、Smarty、Heyes Templates Class、

FastTemplate など、チームによって特別に開発された多くのテンプレート エンジンがあります。これらのテンプレート エンジンを直接使用すると、上記の機能の多くを完全に実現できます。ただし、初心者の場合、テンプレート エンジンの原理を理解することで、テンプレートを使用する必要がある理由をより深く理解できるようになります。

3 TPL テンプレートのフローチャート

独自のテンプレート エンジンを作成する場合の最大の利点は、シンプルさです。多くのチームによって作成されたテンプレート エンジンは強力な機能を多数備えているため、安全性も高くなります。しかし、欠点は、それらの多くは使用できず、非常に肥大化することです。

4. TPLテンプレートエンジンの作成

1.初期テンプレートに必要なフォルダーとファイルを作成します

a)ビジネスロジックを記述するために使用されるindex.phpメインファイル。 b) template.inc.php テンプレート初期化ファイル。初期テンプレート情報に使用されます。

c) テンプレート ディレクトリには、すべてのテンプレート ファイルが保存されます。

d) templates_c ディレクトリには、コンパイルされたすべてのファイルが保存されます。

e) キャッシュ ディレクトリにはすべてのキャッシュ ファイルが保存されます。

f) には、すべてのクラス ファイルが格納されるディレクトリが含まれます。
g) config ディレクトリには、テンプレート システム変数設定ファイルが保存されます。

2. ウェブサイトのルートディレクトリにある Index.php ファイルのコード

<span>//</span><span>设置编码为utf-8</span>header(<span>'</span><span>Content-Type:text/html;charset=utf-8</span><span>'</span><span>);
</span><span>//</span><span>网站根目录</span>define(<span>'</span><span>ROOT_PATH</span><span>'</span><span>,dirname(__FILE__));
</span><span>//</span><span>存放模板文件夹</span>define(<span>'</span><span>TPL_DIR</span><span>'</span>,ROOT_PATH.<span>'</span><span>/templates/</span><span>'</span><span>);
</span><span>//</span><span>编译文件夹</span>define(<span>'</span><span>TPL_C_DIR</span><span>'</span>,ROOT_PATH.<span>'</span><span>/templates_c/</span><span>'</span><span>);
</span><span>//</span><span>缓存文件夹</span>define(<span>'</span><span>CACHE_DIR</span><span>'</span>,ROOT_PATH.<span>'</span><span>/cache/</span><span>'</span>);
ログイン後にコピー

3 includes フォルダー内の Templates.class.php — ディレクトリが存在するかどうかを確認するメソッドを追加

<span>//</span><span>创建一个构造方法</span><span>public</span><span> function __construct() {
</span><span>//</span><span>验证一下目录是否存在</span><span>if</span> (!is_dir(TPL_DIR) || !is_dir(TPL_C_DIR) || !<span>is_dir(CACHE_DIR)) {
    exit(</span><span>'</span><span>ERROR:模板文件夹或者编译文件夹或者缓存文件夹没有创建!</span><span>'</span><span>);
  }
}</span>
ログイン後にコピー

4 includes 内のテンプレートclass.php—.tpl テンプレート ファイルをロードするための display() メソッドを作成します

これは、samrty の表示プロトタイプ メソッドでもあります

<span>//</span><span>将模板导入到php文件中</span><span>public</span><span> function display($_file) {
</span><span>//</span><span>设置模板文件的路径</span>  $_tplFile =<span> TPL_DIR.$_file;
</span><span>//</span><span>判断模板文件是否存在</span><span>if</span> (!<span>file_exists($_tplFile)) {
    exit(</span><span>'</span><span>ERROR:模板文件不存在!</span><span>'</span><span>);
  }
</span><span>//</span><span>设置编译文件的文件名</span>  $_parFile = TPL_C_DIR.md5($_file).$_file.<span>'</span><span>.php</span><span>'</span><span>;
</span><span>//</span><span>判断编译文件是否存在,模板文件是否修改过</span><span>if</span> (!file_exists($_parFile) || filemtime($_parFile) <<span> filemtime($_tplFile)) {
</span><span>//</span><span>生成编译文件</span><span>  file_put_contents($_parFile,file_get_contents($_tplFile));
  }
</span><span>//</span><span>载入编译文件</span><span>  include $_parFile;
}
</span><span>//</span><span>引入模板类</span>require ROOT_PATH.<span>'</span><span>/includes/Template.class.php</span><span>'</span><span>;
</span><span>//</span><span>实例化模板类</span>$_tpl = <span>new</span><span> Template();
</span><span>//</span><span>载入index.tpl</span>$_tpl->display(<span>'</span><span>index.tpl);</span>
ログイン後にコピー

続きます

上記は、PHP テンプレート エンジン 1 (35) の手動開発を内容の側面も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

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