Smarty - 簡介 & 安裝 & 創(chuàng)建項目

簡介

Smarty是一個php模板引擎。
更準確的說,它分開了邏輯程序和外在的內容,提供了一種易于管理的方法构哺。可以描述為應用程序員和美工扮演了不同的角色,因為在大多數情況下 ,他們不可能是同一個人。
例如,你正在創(chuàng)建一個用于瀏覽新聞的網頁,新聞標題,標簽欄,作者和內容等都是內容要素,他們并不包含應該怎樣去呈現禾唁。在Smarty的程序里,這些被忽略了。
smarty不嘗試將邏輯完全和模板分開无切。如果邏輯程序嚴格的用于頁面表現,那么它在模板里不會出現問題荡短。有個建議:讓應用程序邏輯遠離模板, 頁面表現邏輯遠離應用程序邏輯。這將在以后使內容更容易管理,程序更容易升級哆键。

業(yè)務邏輯和顯示邏輯分離掘托,是Smarty的一個設計理念。

Smarty的特點之一是模板編譯籍嘹。
意思是Smarty讀取模板文件然后用他們創(chuàng)建php腳本闪盔。這些腳本創(chuàng)建以后將被執(zhí)行。因此并沒有花費模板文件的語法解析,同時每個模板可以享受到諸如Zend加速器(http://www.zend.com) 或者PHP加速器(http://www.php-accelerator.co.uk)辱士。這樣的php編譯器高速緩存解決方案泪掀。

Smarty特點

1.非常的快!
2.用php分析器干這個苦差事是有效的
3.不需要多余的模板語法解析,僅僅是編譯一次
4.僅對修改過的模板文件進行重新編譯
5.可以編輯'自定義函數'和自定義'變量',因此這種模板語言完全可以擴展
6.可以自行設置模板定界符,所以你可以使用{}, {{}}, , 等等
7.諸如 if/elseif/else/endif 語句可以被傳遞到php語法解析器,所以 {if ...} 表達式是簡單的或者是復合的
8.section之間可以無限嵌套
9.引擎是可以定制的.可以內嵌php代碼到你的模板文件中
10.內建緩存支持
11.獨立模板文件
12.可自定義緩存處理函數
13.插件體系結構

Smarty安裝

安裝Smarty發(fā)行版在/libs/目錄里的庫文件(就是解壓了).
Smarty手冊范例 2-1.Smarty庫文件:

Smarty.class.php
Smarty_Compiler.class.php
Config_File.class.php
debug.tpl
/core/*.php (all of them)
/plugins/*.php (all of them)

Smarty使用一個叫做'SMARTY_DIR'的php常量作為它的系統(tǒng)庫目錄
基本上,如果你的應用程序可以找到 Smarty.class.php文件,你不需要設置SMARTY_DIR,Smarty將會自己運作。

但是,如果 Smarty.class.php沒有在你的include_path(php.ini里的一項設置)里,或者沒有在你的應用程序里設置它的絕對路徑的時候,你就必須手動配置SMARTY_DIR了(大多數程序都如此)SMARTY_DIR必須包含結尾斜杠颂碘。

這里是你在你的php腳本里創(chuàng)建一個smarty的應用實例的例子:

require('Smarty.class.php');
$smarty = new Smarty;

試著運行一下以上腳本,如果你發(fā)現"未找到Smarty.class.php 文件"的錯誤時,你應該這樣做:

Smarty手冊范例 2-3.加入庫文件目錄的絕對路徑:

require('/usr/local/lib/php/Smarty/Smarty.class.php');
$smarty = new Smarty;

Smarty手冊范例 2-4.在include_path加入庫文件目錄:

// Edit your php.ini file, add the Smarty library
// directory to the include_path and restart web server.
// Then the following should work:
require('Smarty.class.php');
$smarty = new Smarty;

Smarty手冊范例 2-5.手工設置SMARTY_DIR常量:

define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$smarty = new Smarty;

現在庫文件已經搞定,該是設置為你的應用程序配置其他有關Smarty的目錄的時候了异赫。
Smarty要求4個目錄,默認下命名為:tempalates, templates_c, configs and cache
每個都是可以自定義的,可以修改Smarty類屬性: $template_dir, $compile_dir, $config_dir, and $cache_dir respectively头岔。強烈推薦你為每個用到smarty的應用程序設置單一的目錄!

確定你已經知道了你的web服務器文件根目錄塔拳。
在我們的例子里,文件根目錄是:"/web/www.mydomain.com/docs/"Smarty的4個目錄 只可以被那些庫文件訪問,不可以被網絡上的瀏覽器訪問的目錄。因此為避免任何安全問題,要求將那4個目錄和網頁文件目錄(就是瀏覽器看的)分開來峡竣。

在我們的安裝例子里,我們將為一個留言板程序配置smarty環(huán)境靠抑。我們挑選應用程序只為了實現目錄命名約定。你可以對任何程序使用相同的環(huán)境,只要將"guestbook"改成你要的名字就可以了澎胡。我們將把Smarty目錄放在 "/web/www.mydomain.com/smarty/guestbook/"下孕荠。

在你的文檔目錄下至少得有一個文件,這個文件可以被瀏覽器訪問.我們叫它 "index.php"好了.把它放到"/guestbook/"目錄下娩鹉。

現在我們看看這些文件結構:

Smarty手冊范例 2-6.例子的文件結構:

/usr/local/lib/php/Smarty/Smarty.class.php
/usr/local/lib/php/Smarty/Smarty_Compiler.class.php
/usr/local/lib/php/Smarty/Config_File.class.php
/usr/local/lib/php/Smarty/debug.tpl
/usr/local/lib/php/Smarty/core/*.php
/usr/local/lib/php/Smarty/plugins/*.php

/web/www.mydomain.com/smarty/guestbook/templates/
/web/www.mydomain.com/smarty/guestbook/templates_c/
/web/www.mydomain.com/smarty/guestbook/configs/
/web/www.mydomain.com/smarty/guestbook/cache/

/web/www.mydomain.com/docs/guestbook/index.php

Smarty的 compile_dir 和cache_dir必須可寫。通常是user "nobody" 和 group "nobody"稚伍。如果是 OSX用戶,默認為user "web" 和 group "web"弯予。如果你在使用Apache,你可以看看httpd.conf 文件 (通常在"/usr/local/apache/conf/"目錄下)哪些user和group正在被使用。

Smarty手冊范例 2-7 文件權限設置:

chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/templates_c/
chmod 770 /web/www.mydomain.com/smarty/guestbook/templates_c/

chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/cache/
chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/

技術提示:
chmod 770相當安全了,它只讓user "nobody" 和 group "nobody" 讀/寫 訪問个曙。如果你要對任何人開放讀取訪問權限(大多是為了你自己查看文件),你可以使用 775锈嫩。

我們需要創(chuàng)建index.tpl文件讓smarty載入.這個文件放在 $template_dir目錄里。


基礎安裝

在Smarty發(fā)行包中垦搬,目錄/libs/ 里面的文件就是Smarty的庫文件呼寸。 庫文件都是.php文件,開發(fā)者不應該編輯它們猴贰。
庫文件可以多個應用程序共用对雪,而且只在升級新版本的Smarty時進行覆蓋。

我們下載smarty包米绕,然后解壓到/usr/local/lib形成/usr/local/lib/smarty-3.1.32瑟捣,就算安裝好了。

在上面的例子中栅干, 文檔根目錄是/web/www.example.com/guestbook/htdocs/迈套。 Smarty目錄僅可以通過Smarty庫文件訪問,而不能直接被瀏覽器訪問碱鳞。 這樣可以避免一些安全問題桑李,強烈建議(但不強制)把這些目錄 放到WEB服務器文檔根目錄之外。

將會有至少一個文件是放到文檔根目錄的窿给,這個文件也會被瀏覽器訪問到贵白。 我們將這文件命名為index.php, 放置到文檔根目錄/htdocs/中。

基本配置

Smarty需要一些對目錄的 讀寫權限 (windows用戶請忽略)填大,包括 $compile_dir$cache_dir 目錄 (templates_c/cache/), 所以戒洼,要確保web服務器用戶有權限讀寫它們。

通常是用戶“nobody” 和組“nobody”. OS X用戶允华,默認用戶是“www”和組“www”. 如果你使用Apache圈浇,你可以看看你的httpd.conf 來確定是使用什么用戶和組的。

Example 2.7. 設置目錄的讀寫權限:

chown nobody:nobody /web/www.example.com/guestbook/templates_c/
chmod 770 /web/www.example.com/guestbook/templates_c/

chown nobody:nobody /web/www.example.com/guestbook/cache/
chmod 770 /web/www.example.com/guestbook/cache/
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末靴寂,一起剝皮案震驚了整個濱河市磷蜀,隨后出現的幾起案子,更是在濱河造成了極大的恐慌百炬,老刑警劉巖褐隆,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異剖踊,居然都是意外死亡庶弃,警方通過查閱死者的電腦和手機衫贬,發(fā)現死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歇攻,“玉大人固惯,你說我怎么就攤上這事〗墒兀” “怎么了葬毫?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長屡穗。 經常有香客問我贴捡,道長,這世上最難降的妖魔是什么村砂? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任烂斋,我火速辦了婚禮,結果婚禮上箍镜,老公的妹妹穿的比我還像新娘源祈。我一直安慰自己煎源,他們只是感情好色迂,可當我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著手销,像睡著了一般歇僧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锋拖,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天诈悍,我揣著相機與錄音,去河邊找鬼兽埃。 笑死侥钳,一個胖子當著我的面吹牛,可吹牛的內容都是我干的柄错。 我是一名探鬼主播舷夺,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼售貌!你這毒婦竟也來了给猾?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤颂跨,失蹤者是張志新(化名)和其女友劉穎敢伸,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體恒削,經...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡池颈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年尾序,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躯砰。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡蹲诀,死狀恐怖,靈堂內的尸體忽然破棺而出弃揽,到底是詐尸還是另有隱情脯爪,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布矿微,位于F島的核電站痕慢,受9級特大地震影響,放射性物質發(fā)生泄漏涌矢。R本人自食惡果不足惜掖举,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望娜庇。 院中可真熱鬧塔次,春花似錦、人聲如沸名秀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匕得。三九已至继榆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汁掠,已是汗流浹背略吨。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留考阱,地道東北人翠忠。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像乞榨,于是被迫代替她去往敵國和親秽之。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,937評論 2 361