Smarty模版引擎的原理

  Smarty是一個使用php寫出來的模版引擎,用來將本來與html代碼混雜在一塊兒PHP代碼邏輯分離,實現先後端分離。
php

Smarty模板優勢:html

1. 速度:採用Smarty編寫的程序能夠得到最大速度的提升,這一點是相對於其它的模板引擎技術而言的。
2. 編譯型:採用Smarty編寫的程序在運行時要編譯成一個非模板技術的PHP文件,這個文件採用了PHP與HTML混合的方式,在下一次訪問模板時將WEB請求直接轉換到這個文件中,而再也不進行模板從新編譯(在源程序沒有改動的狀況下)
3. 緩存技術:Smarty選用的一種 緩存技術,它能夠將用戶最終看到的 HTML文件緩存成一個靜態的HTML頁,當設定Smarty的cache屬性爲true時,在Smarty設定的cachetime期內將用戶的WEB請求直接轉換到這個靜態的HTML文件中來,這至關於調用一個靜態的HTML文件。
4. 插件技術:Smarty能夠自定義 插件插件實際就是一些自定義的函數。
5. 模板中能夠使用if/elseif/else/endif。在模板文件使用判斷語句能夠很是方便的對模板進行格式重排。
(下面的部分轉載自他人博客...)

分析模板技術:是利用php語言讀取模板文件完成字符串替換掉的過程後端

詳解代碼以下:緩存

複製代碼
html頁面:
<body>
<font color = 'red'>{id}</font><br>
<font color = 'green'>{name}</font><br>
<font color = 'bule'>{age}</font><br>
</body>


後臺邏輯部分
//
$id=8;
$name='zhangsan';
$age = 12;

$str = file_get_contents('demo1.html');//模板文件的全部內容
$str = str_replace('{id}', $id, $str);//替換id
$str  = str_replace('{name}', $name, $str);
$str = str_replace('{age}', $age, $str);
echo $str;
?>
複製代碼

 

 面向對象技術實現模板功能的封裝前後端分離

複製代碼
 1 <?php
 2 class Template
 3 {
 4     //屬性
 5     public $vars;                        //保存要替換的標記和數據的內容
 6     public $left_delimiter = '{*';        //左分隔符
 7     public $right_delimiter = '*}';        //右分隔符
 8     //方法
 9     public function assign($key,$value)
10     {
11         
12         $this->vars[$key] = $value;
13     }
14     public function display($file)     //file表示模板名
15     {
16         $str = file_get_contents($file);    //從模板中讀取多有內容,並將內容放入$str中
17         foreach ($this->vars as $key => $value) //$key 鍵名(模板標記) $value 值
18         {
19             $str = str_replace($this->left_delimiter.$key.$this->right_delimiter, $value, $str);
20         }
21         echo $str;
22         //file_put_contents('bak.html', $str);
23     }
24 }
25 ?>
複製代碼

注意:assign(‘name’,’zhangsan’);這句的時候其實尚未進行數據替換,而是把傳入的數據保存在vars[]中,當display的時候才進行數據替換函數

相關文章
相關標籤/搜索