下面介紹一下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模板版本Smarty-3.0.8,解壓後檔案目錄如下:
於是開始了我的Smarty之旅嘍——
Step 1
在伺服器網頁檔案夾中建立一個smartytest檔案夾,只取libs目錄中的檔案,複製到smartytest檔案夾下,更名為smarty
Step 2
在test中建立目錄templates,並在該目錄下建立四個檔案夾cache、configs、templates、templates_c,建成的檔案夾形式如
Step 3
寫一個設定檔,通過它可以實現與Smarty的串連,而且把它寫成單獨的檔案可以在寫不同頁面時重複寫相同的代碼(當然也可以把它寫成類形式,便於自訂),這裡我把它檔案名稱定為config.php
複製代碼 代碼如下:<?php
//擷取當前檔案夾所在的絕對路徑 H:\wamp\www\smartytest\
define('SMARTY_PATH',substr(dirname(__FILE__),0,-9));
//擷取templates檔案夾的絕對路徑 H:\wamp\www\smartytest\templates
define('TEMPLATES_PATH',SMARTY_PATH.'templates/');
require SMARTY_PATH.'smarty/Smarty.class.php';
$smarty = new Smarty;
//定義目錄路徑
$smarty->template_dir = TEMPLATES_PATH.'templates/';
$smarty->complile_dir = TEMPLATES_PATH.'templates_c/';
$smarty->config_dir = TEMPLATES_PATH.'configs/';
$smarty->cache_dir = TEMPLATES_PATH.'cache/';
//定義左右結束符 {% 和 %}
$smarty->left_delimiter = '{%';
$smarty->right_delimiter = '%}';
//關閉緩衝
$smarty->caching = false;
//關閉調試
$smarty->debugging = false;
?>
Step 4
寫一個簡單的模板檔案命名為index.tpl,放到templates\templates目錄下 複製代碼 代碼如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Smarty</title>
</head>
<body>{%$hello%}</body>
</html>
Step 5
寫一個PHP檔案,命名為index.php,放在templates檔案目錄下 複製代碼 代碼如下:<?php
require 'config.php';
$smarty->assign('hello','Hello Word');
$smarty->display('index.tpl');
?>
現在檔案目錄為
Step 6
測試檔案:
總結:使用Smarty模板過程中也遇見了問題,比如Smarty的目錄可以自己設定,自訂性較強,因此對Smarty的教程有很多版本(我在書上看到一個版本,百度百科也有另一種),結果兩個都參考就不明白怎麼放了,最後還是使用百度百科的那種(也就是上文所說);其次在百度百科中的代碼是複製過來的,結果在使用時出現了syntax error, unexpected T_VARIABLE錯誤,看著代碼都很對啊,就是出錯,最後尋找原因,原來是網頁中的全形空格所致,所以在網頁上複製的代碼的莫名錯誤最好的辦法就是把空格都去了重新寫;注意在寫PHP檔案時hello沒有前邊的$符號,而在tpl檔案中引用時就必須得加上$符號。