PHP模板引擎的原理與實踐

2021-09-20 03:25:13 字數 1659 閱讀 8152

模板引擎就是在模板檔案中使用一系列提前約定好的標籤代替原生php**,通過訪問乙個php的入口檔案,會有乙個php編譯檔案根據約定替換模板內標籤以及標籤內變數,最終將模板檔案編譯成乙個php檔案,然後展示到瀏覽器中。

前端開發者將前端**中的所有資料替換成與服務端開發者約定好的標籤及變數名。

服務端開發者將前端**中所需要的變數注入到前端。

該檔案中是模板引擎中的核心,在這裡我們定義了標籤語句等,通過讀取模板檔案,使用正規表示式去匹配模板檔案中與後台約定好的標籤及變數,並將標籤及變數替換成php**,最終生成乙個前後端結合的php檔案。

php的語法中,包括if...elseforeach等語法,以及需要替換的普通變數$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...