2022年smarty下载及入门教程 .pdf
《2022年smarty下载及入门教程 .pdf》由会员分享,可在线阅读,更多相关《2022年smarty下载及入门教程 .pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、smarty下载及入门教程smarty 下载:Smarty 2.6.18 Source March 7th, 2007 Smarty 2.6.17 Source March 5th, 2007 Smarty 2.6.16 Source Dec 1st, 2006 Smarty 2.6.15 Source Nov 30th, 2006 刚开始接触模版引擎的PHP 设计师, 听到Smarty 时,都会觉得很难。 其实笔者也不例外,碰都不敢碰一下。但是后来在剖析XOOPS 的程序架构时,开始发现Smarty 其实并不难。只要将Smarty 基础功练好,在一般应用上就已经相当足够了。当然基础能打好,后
2、面的进阶应用也就不用怕了。这篇文章的主要用意并非要深入探讨Smarty 的使用,这在官方使用说明中都已经写得很完整了。 笔者仅在此写下一些自己使用上的心得,让想要了解Smarty 却不得其门而入的朋友,可以从中得到一些启示。就因为这篇文章的内容不是非常深入,会使用Smarty 的朋友们可能会觉得简单了点。目前本文已经第三次修订了,本想多加一些料进来;不过碍于时间的关系,很多Smarty 的进阶技巧笔者并没有研究得很透彻,所以也不敢拿出来现眼,但笔者相信这篇文章应该能够满足大多数想学习Smarty 的初学者了。 当然本文有谬误的地方也欢迎告知,笔者会在下一次的修订中更正的。Smarty 介绍什么
3、是模版引擎不知道从什么时候开始,有人开始对HTML 内嵌入Server Script 觉得不太满意。然而不论是微软的ASP 或是开放源码的PHP,都是属于内嵌Server Script 的网页伺服端语言。因此也就有人想到, 如果能把程序应用逻辑(或称商业应用逻辑) 与网页呈现(Layout) 逻辑分离的话,是不是会比较好呢?其实这个问题早就存在已久,从交互式网页开始风行时,不论是ASP 或是PHP 的使用者都是身兼程序开发者与视觉设计师两种身份。可是通常这些使用者不是程序强就是美工强,如果要两者同时兼顾,那可得死掉不少脑细胞. 所以模版引擎就应运而生啦!模版引擎的目的, 就是要达到上述提到的逻
4、辑分离的功能。它能让程序开发者专注于资料的控制或是功能的达成;而视觉设计师则可专注于网页排版,让网页看起来更具有专业感!因此模版引擎很适合公司的网站开发团队使用,使每个人都能发挥其专长!就笔者接触过的模版引擎来说,依资料呈现方式大概分成:需搭配程序处理的模版引擎和完全由模版本身自行决定的模版引擎两种形式。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - 在需搭配程序处理的模版引擎中,程序开发者必须要负责变量的呈现逻辑,也就是说他
5、必须把变量的内容在输出到模版前先处理好,才能做assign 的工作。换句话说,程序开发者还是得多写一些程序来决定变量呈现的风貌。而完全由模版本身自行决定的模版引擎,它允许变量直接assign 到模版中,让视觉设计师在设计模版时再决定变量要如何呈现。因此它就可能会有另一套属于自己的模版程序语法(如 Smarty) ,以方便控制变量的呈现。但这样一来,视觉设计师也得学习如何使用模版语言。模版引擎的运作原理,首先我们先看看以下的运行图:一般的模版引擎(如 PHPLib) 都是在建立模版对象时取得要解析的模版,然后把变量套入后,透过parse() 这个方法来解析模版,最后再将网页输出。名师资料总结 -
6、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - 对 Smarty 的使用者来说, 程序里也不需要做任何parse 的动作了, 这些 Smarty 自动会帮我们做。而且已经编译过的网页,如果模版没有变动的话,Smarty 就自动跳过编译的动作,直接执行编译过的网页,以节省编译的时间。使用 Smarty 的一些概念在一般模版引擎中,我们常看到区域的观念,所谓区块大概都会长成这样: 区域内容 这些区块大部份都会在PHP 程序中以if 或 for,
7、while 来控制它们的显示状态,虽然模版看起来简洁多了,但只要一换了显示方式不同的模版,PHP 程序势必要再改一次!名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - 在 Smarty 中,一切以变量为主,所有的呈现逻辑都让模版自行控制。因为Smarty 会有自己的模版语言, 所以不管是区块是否要显示还是要重复,都是用Smarty 的模版语法(if, foreach, section) 搭配变量内容作呈现。这样一来感觉上好象模版
8、变得有点复杂,但好处是只要规划得当,PHP 程序一行都不必改。由上面的说明,我们可以知道使用Smarty 要掌握一个原则:将程序应用逻辑与网页呈现逻辑明确地分离。就是说PHP 程序里不要有太多的HTML 码。程序中只要决定好那些变量要塞到模版里,让模版自己决定该如何呈现这些变量(甚至不出现也行) 。Smarty 的基础安装 Smarty 首先,我们先决定程序放置的位置。Windows 下可能会类似这样的位置: d:appservwebdemo 。Linux 下可能会类似这样的位置: /home/jaceju/public_html/ 。到 Smarty 的官方网站下载最新的Smarty 套件:
9、 http:/。解开Smarty 2.6.0 后,会看到很多档案,其中有个libs 资料夹。 在 libs 中应该会有3 个 class.php 檔 + 1 个 debug.tpl + 1 个 plugin 资料夹+ 1 个 core 资料夹。然后直接将libs 复制到您的程序主资料夹下,再更名为class 就可以了。就这样?没错!这种安装法比较简单,适合一般没有自己主机的使用者。至于Smarty 官方手册中为什么要介绍一些比较复杂的安装方式呢?基本上依照官方的方式安装, 可以只在主机安装一次,然后提供给该主机下所有设计者开发不同程序时直接引用, 而不会重复安装太多的Smarty 复本。 而笔
10、者所提供的方式则是适合要把程序带过来移过去的程序开发者使用,这样不用烦恼主机有没有安装Smarty 。程序的资料夹设定以笔者在Windows 安装 Appserv 为例,程序的主资料夹是 。安装好 Smarty 后,我们在主资料夹下再建立这样的资料夹:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - 在 Linux 底下, 请记得将templates_c 的权限变更为777 。Windows 下则将其只读取消。第一个用 Smar
11、ty 写的小程序我们先设定Smarty 的路径,请将以下这个档案命名为main.php ,并放置到主资料夹下:main.php: template_dir = _SITE_ROOT . /templates/; $tpl-compile_dir = _SITE_ROOT . /templates_c/; $tpl-config_dir = _SITE_ROOT . /configs/; $tpl-cache_dir = _SITE_ROOT . /cache/; $tpl-left_delimiter = right_delimiter = ; ? 照上面方式设定的用意在于,程序如果要移植到其
12、它地方,只要改_SITE_ROOT 就可以啦。(这里是参考XOOPS 的 ) Smarty 的模版路径设定好后,程序会依照这个路径来抓所有模版的相对位置(范例中是 d:/appserv/web/demo/templates/ ) 。然后我们用display() 这个Smarty 方法来显示我们的模版。接下来我们在templates 资料夹下放置一个test.htm :(扩展名叫什么都无所谓,但便于视觉设计师开发,笔者都还是以.htm 为主。 ) templates/test.htm: 现在我们要将上面的模版显示出来,并将网页标题($title) 与内容($content) 更换,请将以下档案内
13、容命名为test.php ,并放置在主资料夹下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - test.php: assign(title, 测试用的网页标题); $tpl-assign(content, 测试用的网页内容); / 上面两行也可以用这行代替/ $tpl-assign(array(title = 测试用的网页标题, content = 测试用的网页内容); $tpl-display(test.htm); ? 请
14、打开浏览器,输入http:/localhost/demo/test.php 试试看 (依您的环境决定网址),应该会看到以下的画面:再到templates_c 底下,我们会看到一个奇怪的资料夹(%179) ,再点选下去也是一个奇怪的资料夹(%1798044067) ,而其中有一个档案:templates_c/%179/%1798044067/test.htm.php: _tpl_varstitle; ? _tpl_varscontent; ? 没错,这就是Smarty 编译过的档案。它将我们在模版中的变量转换成了PHP 的语法来执行,下次再读取同样的内容时,Smarty 就会直接抓取这个档案来执
15、行了。最后我们整理一下整个Smarty 程序撰写步骤:Step 1. 加载Smarty 模版引擎。Step 2. 建立Smarty 对象。Step 3. 设定Smarty 对象的参数。Step 4. 在程序中处理变量后,再用Smarty 的 assign 方法将变量置入模版里。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - Step 5. 利用Smarty 的 display 方法将网页秀出。如何安排你的程序架构上面我们看到除
16、了Smarty 所需要的资料夹外(class 、configs 、templates 、templates_c) ,还有两个资料夹:includes 、 modules 。其实这是笔者模仿XOOPS 的架构所建立出来的,因为XOOPS 是笔者所接触到的程序中,少数使用Smarty 模版引擎的架站程序。所谓西瓜偎大边,笔者这样的程序架构虽没有XOOPS 的百分之一强,但至少给人看时还有XOOPS 撑腰。includes 这个资料夹主要是用来放置一些function 、 sql 檔,这样在main.php 就可以将它们引入了,如下:main.php: template_dir = _SITE_RO
17、OT . /templates/; $tpl-compile_dir = _SITE_ROOT . /templates_c/; $tpl-config_dir = _SITE_ROOT . /configs/; $tpl-cache_dir = _SITE_ROOT . /cache/; $tpl-left_delimiter = right_delimiter = ; ? modules 这个资料夹则是用来放置程序模块的,如此一来便不会把程序丢得到处都是,整体架构一目了然。上面我们也提到main.php ,这是整个程序的主要核心,不论是常数定义、外部程序加载、共享变量建立等, 都是在这里开
18、始的。所以之后的模块都只要将这个档案包含进来就可以啦。因此在程序流程规划期间,就必须好好构思main.php 中应该要放那些东西;当然利用 include 或 require 指令,把每个环节清楚分离是再好不过了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - 在上节提到的Smarty 程序5 步骤,main.php 就会帮我们先将前3 个步骤做好,后面的模块程序只要做后面两个步骤就可以了。从变量开始如何使用变量从上一章范例中
19、,我们可以清楚地看到我们利用 这两个标示符号将变量包起来。预设的标示符号为 及 ,但为了中文冲码及Javascript 的关系,因此笔者还是模仿XOOPS ,将标示符号换掉。变量的命名方式和PHP 的变量命名方式是一模一样的,前面也有个$ 字号(这和一般的模版引擎不同)。标示符号就有点像是PHP 中的 (事实上它们的确会被替换成这个) ,所以以下的模版变量写法都是可行的:1. 2. 3. 在 Smarty 里,变量预设是全域的,也就是说你只要指定一次就好了。指定两次以上的话,变量内容会以最后指定的为主。就算我们在主模版中加载了外部的子模版,子模版中同样的变量一样也会被替代,这样我们就不用再针对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年smarty下载及入门教程 2022 smarty 下载 入门教程
限制150内