资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
网站开发技术高级篇 日照职业技术学院毛书朋2008 4 第七部分模版技术 smarty 提纲 模版smarty的产生什么是smartySmarty的特点Smarty的应用安装第一个程序详解 模版smarty的产生 一个应用程序的开发流程如下 提交计划文档界面设计者 美工 制作了网站的外观模型 然后把它交给后台程序员 程序员使用PHP实现商业逻辑 同时使用外观模型做成基本架构 然后工程被返回到html页面设计者继续完善 就这样工程可能在后台程序员和页面设计者之间来来回回好几次 由于后台程序员不喜欢干预任何有关html标签 同时也不需要美工们和php鬼混在一起 美工设计者只需要配置文件 动态区块和其他的界面部分 不必要去接触那些错综复杂的php代码 因此 这时候有一个很好的模板支持就显得很重要了 模版smarty的产生 早在1999年后期 我们就已经开始为模板引擎写说明文档 在完成这个文档之后 我们开始用c写一个模板引擎 并有希望被包含到php里去 在撞上了许多的技术难题的同时 什么是模板应该做的 什么不该做 这个问题 也被热烈的讨论着 从这些经验 我们决定应该用Php将模板引擎写成一个类 让任何觉得合适的人使用它 模版smarty的产生 所以我们写了一个引擎 从此就有了smarty 注 这个类以前从来没有公开发表过 这个类几乎达到了我们所有的要求 常规变量替换 支持包括其他模板 使用配置文件集成设置 嵌入Php代码 限制 if 语句的作用 还有更多的可以多层嵌套的健壮的动态区块 它用常规表达式做到这一切 于是代码变得相当简洁 我们可以说 令人费解的 在每次调用的时候 都要去解析那些语法和常规表达式 于是在大型应用的时候 它显然慢了下来 在程序员的眼光看来 最大的问题还是使用php脚本建立和处理模板和动态区块的所有必要工作 我们应该如何使他变得更简单 模版smarty的产生 我们可以想象smarty应该有怎样的最后表现 我们知道php代码如果没有了模板解析的开销将有多快 我们也知道从一般的美工看来php语言是多么的 恐怖 然而这一切可以被一种更简单的模板语法掩饰掉 我们应该怎样把这两种方法的长处结合起来 于是 Smarty诞生了 什么是smarty Smarty是一个php模板引擎 更准确的说 它分开了逻辑程序和外在的内容 提供了一种易于管理的方法 可以描述为应用程序员和美工扮演了不同的角色 因为在大多数情况下 他们不可能是同一个人 例如 你正在创建一个用于浏览新闻的网页 新闻标题 标签栏 作者和内容等都是内容要素 他们并不包含应该怎样去呈现 在Smarty的程序里 这些被忽略了 模板设计者们编辑模板 组合使用html标签和模板标签去格式化这些要素的输出 html表格 背景色 字体大小 样式表 等等 有一天程序员想要改变文章检索的方式 也就是程序逻辑的改变 这个改变不影响模板设计者 内容仍将准确的输出到模板 同样的 哪天美工吃多了想要完全重做界面 也不会影响到程序逻辑 因此 程序员可以改变逻辑而不需要重新构建模板 模板设计者可以改变模板而不影响到逻辑 Smarty的特点 优点 速度 采用smarty编写的程序可以获得最大速度的提高 这一点是相对于其它的模板引擎技术而言的 2 编译型 采用smarty编写的程序在运行时要编译成一个非模板技术的PHP文件 这个文件采用了PHP与HTML混合的方式 在下一次访问模板时将WEB请求直接转换到这个文件中 而不再进行模板重新编译 在源程序没有改动的情况下 Smarty的特点 优点 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的环境 php版本4 06以上版本 安装smarty方法非常简单 从 Smarty的应用 第一个程序 编写一个模版文件 index tpl 显示是smarty变量识符里的用 包含的文字为注释内容 我的第一个smarty应用实例大家好 我是 name 欢迎大家访问我的第一个smarty应用实例 CopyRight copyET工作室2008年4月Email etpt Smarty的应用 第一个程序 编写php文件 index phptemplate dir templates 设置模板目录 smarty compile dir templates c 设置编译目录 smarty left delimiter 定义左边界符 smarty right delimiter 定义右边界符 smarty assign name 来自火星的ET 进行模板变量替换 编译并显示位于 templates下的index tpl模板 smarty display index tpl Smarty的应用 详解 一 应用的基本设置包含smarty类文件include once comm Smarty class php 建立smarty实例对象 smarty smarty newSmarty 设置模板目录 smarty template dir templates 设置编译目录 smarty compile dir templates c Smarty的应用 详解 一 应用的基本设置设置缓存目录 smarty cache dir cache 设置缓存时间 smarty cache lifetime 60 60 24 缓存设置 smarty caching false true 这里是调试时设为false 发布时请使用true Smarty的应用 详解 一 应用的基本设置定义边界符 smarty left delimiter smarty right delimiter 进行模板变量替换 smarty assign name 变量内容 编译并显示位于 templates下的模板 smarty display 模版文件名 smarty display index tpl Smarty的应用 详解 一 应用的基本设置模版文件中的注释 smarty left delimiter smarty right delimiter 模版文件中的文件包含 引用 smarty left delimiterincludefile 模版文件名 smarty right delimiter includefile header tpl 页面头 Smarty的应用 详解 二 if elseif else if sexeq 1 WelcomeSir elseif sexeq 2 WelcomeMa am else Welcome if Smarty的应用 详解 三 foreachforeach 用于循环简单数组 它是一个选择性的section循环 它的定义格式为 foreachfrom arrayitem array id foreachelse foreach 其中 from指出要循环的数组变量 item为要循环的变量名称 循环次数由from所指定的数组变量的个数所决定 foreachelse 用来当程序中传递过来的数组为空时的处理 Smarty的应用 详解 编写一模版文件 index4 tpl新闻编号新闻标题 foreachfrom newsArrayitem newsID newsID newsID newsID newsTitle foreachelse 对不起 数据库中没有新闻输出 foreach Smarty的应用 详解 编写一php文件 index4 php array array newsID 1 newsTitle 第1条新闻 array array newsID 2 newsTitle 第2条新闻 array array newsID 3 newsTitle 第3条新闻 array array newsID 4 newsTitle 第4条新闻 array array newsID 5 newsTitle 第5条新闻 array array newsID 6 newsTitle 第6条新闻 smarty assign newsArray array Smarty的应用 详解 四 sectionsection的产生是为解决foreach的不足的 与foreach一样 它用于设计模板内的循环块 它较为复杂 可极大程序上满足程序需要 所以在程序中我习惯使用它而不使用foreach 基本原形为 sectionname nameloop varName start startstep stepmax maxshow true Smarty的应用 详解 四 sectionname section的名称 不用加 loop 要循环的变量 在程序中要使用assign对这个变量进行操作 start 开始循环的下标 循环下标默认由0开始 step 每次循环时下标的增数 max 最大循环下标 show boolean类型 决定是否对这个块进行显示 默认为true Smarty的应用 详解 编写一模版文件 index5 tpl这里将输出一个数组 新闻编号新闻标题 sectionname looploop News News loop newsID News loop newsTitle sectionelse 对不起 没有任何新闻输入 section Smarty的应用 详解 五 PHP MySQL Smarty的使用创建数据库Createdatabasesnews创建数据表CREATETABLEIFNOTEXISTS news info id int 11 NOTNULLauto increment title varchar 60 NOTNULL PRIMARYKEY id UNIQUEKEY id id ENGINE MyISAMDEFAULTCHARSET latin1AUTO INCREMENT 3 插入数据 Smarty的应用 详解 五 PHP MySQL Smarty的使用编写一模版文件 index6 tpl这里将输出一个数组 新闻编号新闻标题 sectionname looploop Newsstart startstep step News loop id News loop title sectionelse 对不起 没有任何新闻输入 section Smarty的应用 详解 五 PHP MySQL Smarty的使用编写一模版文件 index6 php db mysql connect localhost root root ordie 数据库连接错误 mysql select db news db query select fromnews info rst mysql query query db while info mysql fetch array rst MYSQL ASSOC array info smarty assign News array unset array 注销数组mysql close db 关闭数据库连接 smarty display index6 tpl 编译模版 Smarty的应用 详解 六 其它更改smarty的默认配置修改Smarty class ph
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号