一、什麼是smarty?smarty是一個使用php寫出來的模板php模板引擎,它提供了邏輯與外在內容的分離,簡單的講,目的就是要使用php程式員同美工分離,使用的程式員改變程式的邏輯內容不會影響到美工的頁面設計,美工重新修改頁面不會影響到程式的程式邏輯,這在多人合作的項目中顯的尤為重要。二、sma...
一、什麼是smarty?
smarty是一個使用php寫出來的模板php模板引擎,它提供了邏輯與外在內容的分離,簡單的講,目的就是要使用php程式員同美工分離,使用的程式員改變程式的邏輯內容不會影響到美工的頁面設計,美工重新修改頁面不會影響到程式的程式邏輯,這在多人合作的項目中顯的尤為重要。
二、smarty優點:
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。在模板文件使用判斷語句可以非常方便的對模板進行格式重排。
三、不適合使用smarty的地方:
1. 需要實時更新的內容。例如像股票顯示,它需要經常對數據進行更新,這類型的程式使用smarty會使模板處理速度變慢。
2. 小項目。小項目因為項目簡單而美工與程式員兼於一人的項目,使用smarty會喪失php開發迅速的優點。
四、smarty安裝及配置:
下載smarty的安裝包解壓後,把libs文件夾放在網站根目錄下,然後創建幾個文件夾
templates 存放模板文件
templates_c 存放編譯後的文件
configs 存放配置文件
cache 存放緩存文件
再創建初始化文件smarty.init.php
<?php
include "./libs/Smarty.class.php";//包含Smarty類庫所在的文件
$smarty=new Smarty();//創建一個Smarty類的對象$smarty
$smarty->template_dir="./templates/";//設置所有模板文件存放目錄
$smarty->compile_dir="./templates_c/";//設置所有編譯過的模板文件存放目錄
$smarty->config_dir="./configs/";//設置模板中特殊配置文件存放的目錄
$smarty->cache_dir="./cache/";//設置存放Smarty緩存文件的目錄
$smarty->caching=1;//設置開啟Smarty緩存模板功能
$smarty->cache_lifetime=60*60*24;//設置模板緩存有效時間為1天
$smarty->left_delimiter='<{';//設置模板語言中的左結束符
$smarty->right_delimiter='}>';//設置模板語言中的右結束符
?>
五、smarty引擎運行機制:
1、新建模板文件index.tpl及項目中所需的配置文件my.conf,配置文件也可後期補充
<{config_load file="../configs/my.conf"}><!-- 載入配置文件 -->
<html>
<head>
<meta charset="utf-8">
<title><{$title}></title>
</head>
<body bgcolor="<{#bgColor#}>">
<{$content}>
</body>
</html>
2、新建程式入口文件index.php,引入控制器文件,傳值並分配變數,並顯示模板index.tpl
<?php
//引入smarty.init.php
include 'smarty.init.php';
$smarty->assign("title","我的第一個文件標題");
$smarty->assign("content","我的第一個文件內容");
$smarty->display("index.tpl");
?>
3、運行index.php,通過smarty控制器文件會生成一個php格式的編譯文件,當緩存機制未開啟時,瀏覽器會讀取這個編譯文件並最終顯示出來。當開啟緩存機制時,smarty控制器會生成一個靜態HTML頁面,即緩存文件com_index.tpl,這樣瀏覽器讀取性能更高。具體緩存過程詳見smarty詳細使用教程第9點