利用PHP模板引擎smarty
PHP模板引擎smarty詳細介紹,本文講解了什麼是smarty、smarty優點、不適合使用smarty的地方、smarty目錄結構及版本,需要的朋友可以參考下。
一、什麼是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的官方的網站,。下載Smarty 3.1.12。有和zip分別適用於linux和windows版本。
下載好後Smarty-stable-3.1.12解壓縮會得到一個 Smarty-3.1.12 文件夾,裏面有兩個主要文件夾demo和libs
demo文件夾為示例文件夾,裏面包含默認文件夾結構,是我們要進行編寫程序代碼的主要文件夾。demo裏文件夾的名稱都是smarty默認的目錄結構名稱,可以通過改smarty對應屬性值,再把文件夾名改成我們想要的名稱。
libs為smarty代碼源文件夾,一般不動。
/libs/ #主文件
/libs/sysplugins/ #內部plugin
/libs /plugins/ #外部plugin,可自由擴充
/demo/cahce/ #放置緩存文件
/demo/configs / #放置可以載入的配置文件
/demo/templates/ #放置模板文件
/demo/templates_c/ #放置對模板編譯後的文件
可以把解壓得到的 Smarty-3.1.12 文件夾名改成我們想要的項目名,demo也可以改成我們想要的具體存放編碼的文件夾的名稱
2、調試Smarty-3.1.12
創建自己的文件,在demo文件夾下創建。
在templates目錄中創建模板
(幾乎可以是任何文本文件的擴展名,常用的是tpl,php,html,不建議使用後兩者,因為可以從瀏覽器直接訪問而不安全。可以對apache的進行設置,禁止直接訪問文件。或者將templats目錄放在網站文檔樹之外。)
*/
//代碼
require('../libs/');
$smarty = new Smarty;
//在調用的模板裏可以通過{$name}來輸出name的值zhang,{}為這裏的smarty分界符
$smarty->assign('name','zhang');
//調用模板tpl文件裏不能執行PHP語句塊
$smarty->display('templates/');
/*
頁面內容
你好, {$name}
*/
/*
Smarty編譯時的處理過程是源php文件->模板文件(可能調用多個或多次)->源php文件。。。
也就是説不影響原php文件的其他處理和輸出。所以smarty模板文件可以是完整的html,也可以是其中一部分。
smarty處理過程
smarty將php源文件,首先編譯成中間文件(也是php),如果啟用緩存,再根據編譯文件生成緩存文件(也是php),需要緩存的部分全部是硬編碼。
之後的每次訪問都會訪問編譯文件(如果編譯文件已經存在),一次編譯多次調用(可以是單文件的多次,也可以是多文件的多次),如果啟用緩存且有緩存文件而且沒有過期,則直接訪問緩存文件,跳過編譯文件。
編譯文件一經生成,就不會被自動更新,除非模板文件或者配置文件更改。源php文件修改是不會引發重新編譯的。一旦編譯文件重新生成,緩存文件也必然重新生成。
*/
//Smarty允許有兩種特殊的編譯設置存在:
//1、 任何時候都不自動重新編譯(上線階段):只有沒有該文件的編譯文件時才生成,模板文件或者配置文件的更改,不會引發重新編譯。
$smarty->setCompile_check(false);//默認為true,false表示任何時候都不在文件發生變更的情況下生成編譯文件,除了無編譯文件。
$smarty->getCompile_check();//獲得當前編譯檢查的設置
//2、任何時候都重新編譯(調試階段):任何時候都重新編譯。
$smarty->setForce_compile(true);//默認為false,true表示每次都重新編譯(啟用緩存的話,每次都重新緩存)
$smarty->getForce_compile();//獲得當前強制編譯的設置
//開啟緩存
$smarty->setCaching(true);
$smarty->getCaching();//獲取當前緩存狀態,默認是false關閉的
$smarty->setcache_lifetime(60);//設置緩存時間單位秒
//{*模版文件*}
//{nocache}
//{$name}
//{/nocache}
//{*如果開啟緩存的話放在nocache標籤內的.變量不會緩存,每次讀取PHP源文件的值*}
/*
smarty分界符
在模板文件中,區分普通html代碼和smarty代碼靠的是分界符。默認是 {} ,但可能會與js和css相沖突。可以進行變更。
在3.0中模板標籤將不支持空格,如{ $abc }在Smarty2中可以識別的,但是3.0裏頭就不行了,必須這樣{$abc},這樣是為了能夠更好的支持javascript和css。
*/
$smarty->left_delimiter = "{"; //左分界符,2.0屬性,3.0沿用
$smarty->right_delimiter = "}";
/*
-
2017年PHP錯誤總結範文
導語:如果你還是PHP新手的話,不妨就找些PHP錯誤點來看看。下面的是本站小編為大家蒐集的2017年PHP錯誤總結,供大家參考。錯誤總結PHP-不斷更新(新手必看)做開發請開啟全部錯誤提示:error_reporting=E_ALL|E_STRICT屏蔽錯誤提示等於掩耳盜鈴。代碼寫規範,錯誤少一半...
-
數據庫設計和訪問數據庫的 PHP 代碼中出現的五個常見問題
導語:您可以用很多的方式創建數據庫設計、數據庫訪問和基於數據庫的PHP業務邏輯代碼,但最終一般以錯誤告終。本文説明了數據庫設計和訪問數據庫的PHP代碼中出現的五個常見問題,以及在遇到這些問題時如何修復它們。問題1:直接使用MySQL一個常見問題是較老的PHP代碼...
-
增強PHP程序安全的函數
安全是編程非常重要的一個方面。在任何一種編程語言中,都提供了許多的函數或者模塊來確保程序的安全性。在現代網站應用中,經常要獲取來自世界各地用户的輸入,但是,我們都知道“永遠不能相信那些用户輸入的數據”。所以在各種的Web開發語言中,都會提供保證用户輸入...
-
如何寫出高質量的PHP程序
現在的PHP程序員都在追求所謂的高性能,但高性能並不代表是高質量,什麼是高質量的PHP程序呢?我認為,高質量的PHP程序首先得具備以下的要素,就跟隨本站小編一起去了解下吧,想了解更多相關信息請持續關注我們應屆畢業生考試網!一、安全無論程序寫這是一個很老的話題了,...