999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

PHP模板引擎Smarty的安裝配置及應(yīng)用實現(xiàn)

2007-12-31 00:00:00宋尚平李興保
現(xiàn)代教育技術(shù) 2007年9期

【摘要】隨著當(dāng)今社會網(wǎng)絡(luò)化、信息化的不斷深入,構(gòu)建動態(tài)網(wǎng)站已經(jīng)普及到整個網(wǎng)站制作領(lǐng)域。本文是介紹PHP技術(shù)下的Smarty模板引擎,在分析其特點、工作原理的基礎(chǔ)上,簡要介紹了該引擎的安裝、配置以及應(yīng)用實現(xiàn)。

【關(guān)鍵詞】Smarty,PHP,Smarty安裝配置,Smarty應(yīng)用實現(xiàn)

【中圖分類號】G434 【文獻標(biāo)識碼】B 【論文編號】1009—8097(2007)09—0080—03

一、引言

在當(dāng)今的動態(tài)網(wǎng)頁制作領(lǐng)域,無論是ASP 、JSP或是PHP,都是屬于內(nèi)嵌 Server Script 的網(wǎng)頁編程語言。因此也就有人設(shè)想,如果能把程序應(yīng)用邏輯與網(wǎng)頁呈現(xiàn)邏輯分離的話,會不會比較好呢?其實Smarty就能為我們解決這個問題。

那讓我們先來了解一下什么是Smarty?Smarty有什么樣的作用?

Smarty指的是一種PHP模板引擎,它的作用是能夠使程序邏輯與外在內(nèi)容的分離。在實際應(yīng)用中,使用Smarty目的就是要使PHP程序員同模板設(shè)計者分離,也就是說當(dāng)程序員改變程序的邏輯內(nèi)容時,不會影響到美工的頁面設(shè)計;當(dāng)美工修改頁面也不會影響到程序邏輯。這為團隊合作完成項目打下了更加堅實的基礎(chǔ),使每個人都能發(fā)揮其專長。【1】

為了更好的理解Smarty,筆者認為有必要把模板的概念重新介紹一下。看完下面這個例子,您也許會對模板有一個更好的認識。

1996年CGI在中國開始流行的時候,早期的WEB程序員都是從HTML開始自學(xué)成材 的,在PERL中print一行行的HTML也是可以實現(xiàn)的,但是隨著網(wǎng)絡(luò)的不斷發(fā)展,頁面大小暴漲了十幾倍。于是寫CGI程序就產(chǎn)生了一個迫切的要求:分開PERL和HTML源碼。由于需求的驅(qū)動,網(wǎng)頁制作領(lǐng)域取得了很大的進步,主要體現(xiàn)在開發(fā)小組內(nèi)部的分工上。在大型網(wǎng)站制作中,由于網(wǎng)頁美工和程序員對互相的工作相對分離,因此在進行合作的過程中需要用一種約定的\"語言\"進行交流。這種語言術(shù)語叫做\"模板\",程序邏輯和內(nèi)容表示依靠它聯(lián)系。它是一種結(jié)合了HTML和腳本語言特征的一種表達方式。通過這種方式,表示層可以按照用戶所希望的格式來顯示經(jīng)過邏輯層處理過的數(shù)據(jù)。通過這個例子,我們熟悉了模板的含義,進而對Smarty的理解也就沒有問題了。【2】

Smarty構(gòu)思相當(dāng)前衛(wèi),它已經(jīng)成為PHP設(shè)計的全新路線。Smarty可以用在多種操作系統(tǒng)平臺下,本文基于windows平臺進行Smarty的安裝、配置和應(yīng)用實現(xiàn)。筆者所采用的開發(fā)工具:PHP語言(php 5.0.3)、MySQL數(shù)據(jù)庫和UltraEdit等開發(fā)工具;操作系統(tǒng)采用Windows XP;Web服務(wù)器采用IIS5.1。當(dāng)然您可以使用其它版本的工具進行學(xué)習(xí)和制作。

二、Smarty的運行機制

在網(wǎng)頁制作領(lǐng)域,特別是動態(tài)網(wǎng)頁制作領(lǐng)域,對各種開發(fā)工具、組件、平臺的原理的理解以及對其特點的把握就顯得相當(dāng)重要。因此,我們必須對Smarty運行機制進行了解。

(1) Smarty的特點

Smarty的特點可以從它的優(yōu)點和缺點兩個方面來分析。

優(yōu)點是:運行速度極快;效率高;模板只需被解析一次,無需重復(fù);只需重新編譯一次修改過的模板文件;它是一種可擴展的模板語言,你可以自定義函數(shù)和自定義變量格式;任意模板源文件;自定義緩存處理函數(shù);可以在模板文件中嵌入PHP代碼。這些優(yōu)點可以使您在網(wǎng)頁制作中更加靈活、方便。

當(dāng)然,Smarty也有自己的缺點:需要實時更新的內(nèi)容,這類型的程序使用smarty會使模板處理速度變慢;美工與程序員兼于一人的小項目,使用smarty會喪失php開發(fā)迅速的優(yōu)點。【3】

(2)Smarty的運行機制如圖1所示,大家流程圖中可以清楚看出Smarty的工作過程,這里就不作詳述了。【4】

三、Smarty的安裝和配置

首先到Smarty的官方網(wǎng)站(http://smarty.php.net/download.php)下載最新的版本 。筆者以Smarty-2.6.13版本為例進行介紹。下載后,解壓縮到一個指定目錄,解壓目錄可以任意選擇,這里是D:\\web\\smarty目錄。

解壓文件目錄下有四個主要文件目錄demo\\、libs\\ 、misc\\、unit_test\\。其中l(wèi)ibs目錄是主要的庫目錄,也是我們使用最多的目錄。Libs\\目錄里的庫文件主要有:

Smarty.class.php

Smarty_Compiler.class.php

Config_File.class.php

debug.tpl

\\internals\\*.php

\\plugins\\*.php

這些PHP文件可被所有應(yīng)用程序共享,因此我們千萬不要隨意修改其中的內(nèi)容。

接下來我們來分析Smarty的基本設(shè)置。

(1)在include_path加入庫文件目錄

編輯你的php.ini文件,加入你的smarty目錄到include_path。方法是:

include_path = \".;c:\\php\\includes;c:php\\smarty\\libs\"

(2) 設(shè)置SMARTY_DIR

Smarty使用一個叫做'SMARTY_DIR'的PHP常量作為它的系統(tǒng)庫目錄.如果你的程序可以找到 Smarty.class.php文件,你不需要設(shè)置SMARTY_DIR,Smarty 將會自己運作.但是,如果 Smarty.class.php沒有在你的include_path(php.ini里的一項設(shè)置)里,或者沒有在你的應(yīng)用程序里設(shè)置它的絕對路徑的時候,就必須手動配置SMARTY_DIR 。(注意:SMARTY_DIR必須包含結(jié)尾斜杠)

手工設(shè)置SMARTY_DIR常量方法是:

define('SMARTY_DIR',' \\php\\Smarty\\');

(3)在php腳本里創(chuàng)建一個smarty的例子:

require(‘Smarty.class.php’);

$smarty = new Smarty;

?>

試著運行一下以上腳本,如果你發(fā)現(xiàn)\"未找到Smarty.class.php 文件\"的錯誤時,你應(yīng)該這樣做,加入庫文件所在目錄的絕對路徑,方法是:

require(' \\php\\Smarty\\Smarty.class.php');

$smarty = new Smarty;

?>【5】

至此,基本配置已經(jīng)完成。

四、應(yīng)用實現(xiàn)

我們通過一個“文字傳遞”的實例來講解Smarty的應(yīng)用。

本例以D:\\web\\wenzi\\為根目錄。它要求四個目錄,默認下命名為:tempalates, templates_c, configs ,cache. 每個都是可以自定義的,當(dāng)然也可以修改Smarty的類屬性: $template_dir, $compile_dir, $config_dir, 和 $cache_dir。Smarty的四個目錄只可以被那些庫文件訪問,不可以被網(wǎng)絡(luò)上的瀏覽器訪問的目錄。因此為防止不安全因素,建議將那4個目錄和網(wǎng)頁文件目錄區(qū)分開來。

(1)我們在D:\\web\\wenzi\\分別建立tempalates, templates_c, configs 和 cache四個文件夾。通常使用.tpl來標(biāo)識smarty模板,下面我們就在tempalates目錄下自編一個.tpl文件,取名為index.tpl。編輯內(nèi)容如下:

{* smarty 變量標(biāo)志符中用*包含的文字轉(zhuǎn)化為注釋內(nèi)容 *}

{include file=\"header.tpl\"}{*頁面開始*}

Welcome!My name is{$name}, We can help each oether.Thanks!

{include file=\"foot.tpl\"}{*頁面結(jié)束*}

上邊這個例子是一個tpl模板,其中:

①{**}是模板頁的注釋內(nèi)容,模板進行解析時不進行任何輸出,僅供模板設(shè)計者對模板進行注釋,這有利于閱讀和區(qū)分其中的內(nèi)容。

②{include file=\"X.tpl\"}使用此句將一個模板文件包含到當(dāng)前頁面中,例子中將在網(wǎng)站中公用事的head.tpl與foot.tpl進行了包含,你可以這樣想,使用這一句將X.tpl中的內(nèi)容全部復(fù)制在當(dāng)前語句處。當(dāng)然,你不使用這一句也可以,將X.tpl中的內(nèi)容復(fù)制到當(dāng)前語句處

也是完全可以了。

③{$name}: 模板變量,它是smarty中的核心部分,并且以PHP變量形式給出,這將在smarty程序中將使用。

(2)本例完整源程序如下:

①新建header.tpl,并進行編輯:

文字傳遞

②新建foot.tpl,并進行編輯:

感謝您的光臨!

③新建index.tpl,并進行編輯:

{include file=\"header.tpl\"}{*頁面頭*}

Welcome!My name is{$name}, We can help each oether.Thanks!

{include file=\"foot.tpl\"}{*頁面尾*}

(4)新建Index.php,并進行編輯:

//文件名: Index.php

//作 用: 實現(xiàn)文字傳遞

include_once(\".\\Smarty.class.php\"); //包含smarty類文件

$smarty = new Smarty(); //建立smarty實例對象$smarty

$smarty->template_dir = \".\emplates\";//設(shè)置模板目錄

$smarty->compile_dir = \".\emplates_c\"; //設(shè)置編譯目錄

$smarty->left_delimiter = \"{\";

$smarty->right_delimiter = \"}\";

$smarty->assign(\"name\", \"張三\"); //進行模板變量替換

//編譯并顯示位于.\emplates下的index.tpl模板

$smarty->display(\"index.tpl\");

?>

④最終執(zhí)行這個程序時將顯示為:

Welcome!My name is張三, We can help each other.Thanks!

感謝您的光臨!【6】

盡管這只是一個簡單實現(xiàn),但是筆者卻希望它能夠起到拋磚引玉的功效,使大家都能夠了解它、使用它。只有這樣,Smarty才能發(fā)揮出耀眼的光芒。

五、結(jié)束語

Smarty最有意義之處在于它是PHP新體系的一部份,Smarty自官方發(fā)布以來,已經(jīng)得到了廣泛的應(yīng)用和迅速的發(fā)展,其版本不斷更新。Smarty發(fā)展飛速的原因是多方面的。就其技術(shù)本身而言,具有其它PHP模板引擎不可比擬的優(yōu)點;更實際也是最重要的是市場更需要Smarty這種速度快、 效率高、方便易用的PHP模板引擎。鑒于Smarty諸多的優(yōu)點,對它的掌握就顯得相當(dāng)重要,讓Smarty技術(shù)成為我們構(gòu)筑動態(tài)網(wǎng)站的有利臂膀!

參考文獻

[1] [2]陳俊宏.《PHP4網(wǎng)站實作深度研究篇》[M].北京:人民郵電出版社,2001

[3] 南順成,劉敏.《PHP網(wǎng)絡(luò)編程技術(shù)》[M].北京:國防工業(yè)出版社,2002

[4] 臺灣聯(lián)盟 http://www.twpug.net/modules/mylinks

[5] [6]Smarty官方網(wǎng)址 http://smarty.php.net

主站蜘蛛池模板: 国产成人91精品免费网址在线| 乱码国产乱码精品精在线播放| 国产成人精品男人的天堂| 国产欧美另类| jizz在线免费播放| 久久精品国产91久久综合麻豆自制| 秋霞一区二区三区| 亚洲精品图区| 一级毛片在线播放免费观看| 91免费观看视频| 午夜国产在线观看| 国模极品一区二区三区| 久久国产精品娇妻素人| 国产成人高精品免费视频| 亚洲视频四区| 波多野结衣一区二区三区四区视频| 国产成人麻豆精品| 色呦呦手机在线精品| 国产肉感大码AV无码| 无码免费的亚洲视频| 美女被操黄色视频网站| 中文字幕日韩久久综合影院| 亚洲一区黄色| 精品91在线| 国产精品美女自慰喷水| 香蕉国产精品视频| 激情影院内射美女| 国产免费精彩视频| 在线中文字幕网| 激情无码视频在线看| 国产精品久久久免费视频| 欧美亚洲国产日韩电影在线| 国产又黄又硬又粗| 亚洲国产第一区二区香蕉| 精品三级网站| 国产久草视频| 婷婷伊人久久| 日韩国产另类| 一本大道香蕉高清久久| 99久久精彩视频| 欧美成人h精品网站| 永久免费精品视频| 国产成人免费观看在线视频| 黄片在线永久| 99热这里只有成人精品国产| 免费无码又爽又黄又刺激网站 | Jizz国产色系免费| 无码aaa视频| 视频一本大道香蕉久在线播放 | 欧亚日韩Av| 国产91全国探花系列在线播放| 国产区免费| 99er精品视频| 欧美国产日韩一区二区三区精品影视| 精品国产一区二区三区在线观看 | 欧美一级视频免费| 亚洲国产成人在线| 美女视频黄频a免费高清不卡| 日本成人在线不卡视频| 日日拍夜夜操| 久久综合五月| 国产一级毛片高清完整视频版| 99在线视频免费| 国产欧美另类| 99精品福利视频| 91av国产在线| 久久精品免费看一| 亚洲三级影院| 蜜桃视频一区| 国产乱人伦精品一区二区| 成人福利在线视频免费观看| 天天综合色天天综合网| 综合成人国产| 午夜精品福利影院| 国产精品高清国产三级囯产AV| 中文字幕首页系列人妻| 国产丝袜无码精品| 成人精品视频一区二区在线| 国产拍在线| 亚洲天堂首页| 欧美综合区自拍亚洲综合绿色| 57pao国产成视频免费播放|