码迷,mamicode.com
首页 > 其他好文 > 详细

20150211--Smarty2-02

时间:2016-05-06 02:11:01      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

、综合案例——PHP+Smarty完成数据分页

1、数据库设计

p_id int

p_title varchar

p_addtime int

2设计HTML界面(ok)
3、编写程序

fenye.php  fenye.html

效果:

技术分享

、程序篇

常量

变量

常用方法

缓存控制技术

1、常量

SMARTY_DIR

技术分享

2、变量

$template_dir :模板路径

$compile_dir :编译目录

$config_dir :配置文件目录

$cache_dir :缓存目录

$left_delimiter :左分界符

$right_delimiter :右分界符

$caching :缓存开关,Boolean类型,true和false,默认false

$cache_lifetime :缓存周期,默认情况3600秒 1个小时

$debugging :调试开关,Boolean类型,默认为false

$php_handling :Smarty3.0中已基本无效,默认整型

技术分享

示例代码:

技术分享

3、常用方法

assign         :分配变量到模板文件(值传递)

assignByRef :分配变量到模板文件(引用传递)

append :以数组的形式分配变量到模板(值传递)

appendByRef :以数组的形式分配变量到模板(引用传递)

clearAllAssign   :清除所有赋值操作

clearAssign :清除指定赋值操作

clearCache     :清除缓存

configLoad :加载配置文件

clearConfig :清除配置信息

display :显示输出模板文件

fetch :载入文件到字符串

templateExists  :判断模板文件是否存在

示例代码:

例1:assign与assignByRef的区别

技术分享

例2:append方法

技术分享

运行效果:

技术分享

例3:clearAssign与clearAllAssign

技术分享

例4:configLoad加载配置文件

技术分享

例5:fetch方法

功能:载入文件到字符串

静态化技术

www.baidu.com/index.php?id=10

www.baidu.com/index.php?id=11

www.baidu.com/index.php?id=12

www.baidu.com/1407222879.html

www.baidu.com/1407222880.html

技术分享

效果:

技术分享

例6:templateExists判断模板是否存在‘

示例代码:

技术分享

、缓存篇

编译 < 缓存 < 静态化

1、Smarty中的缓存

默认是关闭,如果要使用,请开启Smarty缓存开关caching

2、使用Smarty缓存

示例代码:

技术分享

运行效果:

技术分享

3、缓存作用

1)加快网站的访问速度

2)减少服务器的压力

3)减少数据库服务器的压力你

4、缓存文件从“何”而来?

答:编译文件

5、Smarty工作原理图

技术分享

6、isCached方法

基本语法

$smarty->isCached(“tpl.tpl”)

功能:用于检测模板是否拥有缓存

例1:通过smarty读取数据库中的一条记录

技术分享

例2:通过缓存技术减少对数据库的读取

技术分享

7、清除缓存

$smarty->clearCache(“tpl.tpl”)

清除指定页面的缓存

$smarty->clearAllCache()

清除所有页面缓存(cms系统后台的清楚缓存按钮)

技术分享

通过clearCache可以清楚指定页面的缓存,我们通常用于单页面处理

公司简介 -----------------------------------    更新页面

而我们的clearAllCache通常用于清除所有缓存,通过用于整个系统中

例如ecshop右上角的清除缓存按钮,dedecms更新缓存

8、单页面多缓存

www.shop.com/show.php?id=1 读取id为1的产品内容

www.shop.com/show.php?id=2

www.shop.com/show.php?id=3

通过实验可知,只有第一次访问时,系统可以正常读取,以后每次访问时,系统自动转向第一次请求的缓存页面,无论参数如何变化

如何解决?

答:通过单页面多缓存

基本语法:

$smarty->display(“tpl”, “唯一值”)

实例代码:

技术分享

该功能主要用于详细内容页。

9、缓存集合

问题:以上问题,如果有多个参数

答:可以通过缓存集合的方式来解决以上问题

示例代码:

技术分享

以上代码主要应用于分类页或列表页

10、局部缓存

在项目中,可能有些功能或模块并不需要进行缓存(如点击次数、评论),如何解决呢?

技术分享

$smarty->assign(“var”, “value”, true) :当前变量不缓存(PHP入口)

{$var nocache=true} :当前变量不缓存(模板页)

{nocache}{/nocache} :某个区块不缓存(模板页)

示例代码:

例1:

技术分享

例2:

技术分享

例3:区域缓存

技术分享

、过滤器

1、什么是过滤器

tpl源文件 =〉Prefilter =〉编译tpl文件 => Postfilter =>保存到磁盘=> 编译过的php文件执行=〉Output Filters(=〉如果有smarty cache的话,Output Filters的内容会缓存) =>结果输出。

Prefilter:前置(预)过滤器(标签替换成动态代码发生的)

Postfilter:后过滤器(编译文件保存到硬盘时发生的)

OutputFilter:在请求转发回用户时触发此过程

2、验证过滤器的存在

在Smarty3.0中使用以下方式创建过滤器

$smarty->registerFilter($type, $callback)

$type:定义过滤器的类型

pre  预过滤器

post 后过滤器

output 输出过滤器

$callback:自定义函数

技术分享

、整合Smarty到MVC

1)在Core中创建Tools文件夹用于保存第三方框架文件

2)复制smarty到Core中Tools文件夹

3)在View.class.php核心视图类中引用Smarty入口文件

4)在Action.class.php核心控制器中创建如下语句

public function __constructor() {

   $this->view = new View();

   $this->view->setTemplateDir(‘模板存放路径’);

}

5)以后就可以在所有控制器中使用$this->view->assign()与$this->view->display()方法

20150211--Smarty2-02

标签:

原文地址:http://www.cnblogs.com/lifushan/p/5463962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!