模板引擎就是在模板檔案中使用一系列提前約定好的標籤代替原生php**,通過訪問乙個php的入口檔案,會有乙個php編譯檔案根據約定替換模板內標籤以及標籤內變數,最終將模板檔案編譯成乙個php檔案,然後展示到瀏覽器中。
前端開發者將前端**中的所有資料替換成與服務端開發者約定好的標籤及變數名。
服務端開發者將前端**中所需要的變數注入到前端。
該檔案中是模板引擎中的核心,在這裡我們定義了標籤
語句
等,通過讀取模板檔案,使用正規表示式去匹配模板檔案中與後台約定好的標籤及變數,並將標籤及變數替換成php**,最終生成乙個前後端結合的php檔案。
php的語法中,包括if...else
foreach
等語法,以及需要替換的普通變數$value
, php原生語句,注釋等等。一般情況下,大家習慣使用以下標籤
// 對應原生
<?php echo $value; ?>
// 對應原生
<?php
foreach($array as $k => $v)
?>
i'm xiaoming;
i'm xiaohong;
i'm xiaoli;
// 對應原生
<?php
if($data == 'xiaoming') else if ($data == 'xiaohong') else
?>
discuz
的標籤。
正規表示式30分鐘入門教程
// 匹配的正規表示式
$this->t_p = "#\#"; // 匹配普通變數
$this->t_p = "#\#"; // 匹配
$this->t_p = "#\#"; // 匹配 or
// 對應的替換內容
$this->t_r = "<?php echo \$this->value['\\1']; ?>";
$this->t_r = "<?php foreach((array)\$this->value['\\1'] as \$k => \$v) ?>";
編譯就是對模板檔案讀取,使用正規表示式對模板標籤及變數進行替換,最終將替換後的內容儲存在乙個php檔案中即可。
使用的相關函式:
<?php
// 讀取檔案內容
file_get_contents($file)
// 正則替換
preg_replace(pattern, replacement, subject);
?>
通過這三步,乙個簡單的模板引擎就已經製作成功了,但是模板引擎的工作原理上面已經說過了,在進行正則匹配替換的過程中,效率極低,php自身效率本來就很低,在加上正則匹配,就可想而知了。所以,一般情況下,模板引擎都會有自己的快取機制,將解析成功的內容儲存成乙個html檔案,並設定快取有效期,這樣可以很大程度上提公升效率。
本文是學習《php核心技術與最佳實踐》列旭松 陳文著 第6章 php模板引擎的原理與實踐 學習筆記。
感謝作者!
php模板引擎原理
訪問php檔案,php檔案會去載入模板引擎,通過模板引擎去載入模板然後替換模板裡面的變數 然後生成乙個編譯檔案 最後將該編譯檔案匯入 訪問的php檔案中輸出 第二次訪問的時候 如果 快取檔案存在或者沒有被改動則直接 匯入快取檔案 輸出 否則重新編譯 自定義的乙個模板引擎 mytpl.class.ph...
模板引擎原理
1 模板概念 通常是指嵌入某種動態程式語言 的文字,資料和模板通過某種形式的結合可以變化出不同的結果,模板通常用來定義顯示的形式,能夠使資料展示更加豐富,而且容易維護 2 模板的好處 1 簡化了html書寫 2 通過程式設計元素 比如迴圈和條件分支 對資料的展現更具有控制力 3 分離資料與展現,使得...
模板引擎的實現原理
模板引擎是通過字串拼接得到的 let template hello name let template hello name 字串是通過new function執行的 let name world let template let str hello name return str let fn n...