原始出處 、作者資訊和本宣告。否則將追究法律責任。
開發乙個
web專案,通常分為兩部分,一部分是
gui,即介面、美工,使用
html,css,js
編寫,另一部分則是業務邏輯,即程式、功能,使用
php編寫。而模板引擎則是聯絡這兩部分的「橋梁」,可理解成乙個
php類,裡面定義了許多方法,實現了將
php的原始輸出載入上介面樣式後再輸出。
沒用模板之前的編寫的**是這樣的:
<?php
$title = 「標題
」;$content = 「內容
」;?>
<?php echo $content; ?>
這樣的話美工與邏輯沒有分離,簡單的說就是
php程式設計師不僅要寫程式還要精通美工,這往往十分困難,因此需要將這兩部分工作分開。
在此通過自己建立乙個簡單的模板引擎為例子,更好的體會模板引擎的原理。
之前說了開發乙個
web專案分成
gui與業務邏輯兩部分,因此我們建立兩個資料夾,乙個命名為「
templates
」,裡邊存放模板,新建乙個
tpl.html
檔案,另乙個命名為「
php」,裡邊存放業務邏輯,新建乙個
index.php
檔案。
tpl.html
檔案**通常是這樣:
<>
可以看出來,和之前的**相比,
tpl.html
中只有html
**,沒有
php**,但是增加了新的標籤,這類標籤是自己定義的,裡面的內容只有經過模板引擎編譯後才能被識別,編譯後的檔案存放在「
templates_c
」資料夾下。這個檔案主要是介面設計用的,將大量使用到
css,
js等技術。
這時候tpl.html
和index.php
仍舊是分離的,互不干擾,因此需要乙個「橋梁」連線,即模板引擎,其實就是乙個
php類,故在此可以建立乙個
mytpl.class.php
的php
檔案。
mytpl.class.php
檔案通常定義乙個類
mytpl
,類中需定義乙個陣列
tpl_var
用於存放
tpl.html
中自定義內容標籤的引數,此外還需定義一些方法,這些方法最主要的目的是將
tpl.hml
中無法識別的的內容標籤轉換成
php語句,然後再寫到乙個「
templates_c
」資料夾下的
tpl_c.html
中,這個過程就是所謂的編譯。
通常tpl_c.html
檔案的**是這樣的:
<?php echo $this->tpl_var[
「content
」]; ?}>
可以看出上面的**是可以被識別的,因為自定義的內容標籤已經被替換成
php語句了,但是
title
和content
的值是多少我們還不得而知,這時候之前建立的
index.php
要上場了,通常它**是這樣的:
include
「tpl.class.php檔案」
;//載入模板引擎
$tpl = new mytpl();
//例項化乙個模板類
$title = 「標題
」;$content = 「內容
」;$tpl->assign(
「title
」,$title);
//呼叫模板類中的方法,分配變數
$tpl->assign(
「content
」,$content);
$tpl->display(
「tpl.html」);
//呼叫模板類中的方法,用於顯示編譯後的內容
上面的**只是一些簡單的描述**,其中的變數的值可以是直接定義的也可以是從資料庫中獲取的,此外該檔案還可以編寫一些複雜的
php程式,這也就是之前說的業務邏輯。
最後用一幅圖概括:
這樣gui
和業務邏輯的工作就分離了,美工設計人員只需要編寫模板檔案就可以改變
web的介面,而
php程式設計師則可以專心編寫自己的程式。
php模板原理
最近在開發的時候,遇到了在有html模板的情況下,每天生成資料包表的需求,如果用框架太重了,就想自己簡單的模板來實現,這樣簡單實用,順便記錄下原理。一.模板引擎原理 php是網頁內嵌型的語言,利用 php 標籤嵌入到html文字中,然後由php的直譯器去執行,動態生成頁面。但是對於大型的web應用,...
php模板引擎原理
訪問php檔案,php檔案會去載入模板引擎,通過模板引擎去載入模板然後替換模板裡面的變數 然後生成乙個編譯檔案 最後將該編譯檔案匯入 訪問的php檔案中輸出 第二次訪問的時候 如果 快取檔案存在或者沒有被改動則直接 匯入快取檔案 輸出 否則重新編譯 自定義的乙個模板引擎 mytpl.class.ph...
PHP 關於模板的原理和解析
將php 和靜態html 進行分離,使 的可讀性和維護性得到顯著提高。使用模板引擎 我們所說的模板是web模板,是主要由html標記組成的語言來編寫的頁面,但也有如何表示包含動態生成內容的方式 解析標籤 模板引擎是一種軟體庫,允許我們從模板生成html 並指定要包含的動態內容。模板引擎的特點 1.鼓...