一、什麼是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點