20150211--Smarty2-02

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

1、数据库设计

p_id int

p_title varchar

p_addtime int

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

fenye.php  fenye.html

效果:

wpsD356.tmp

、程序篇

常量

变量

常用方法

缓存控制技术

1、常量

SMARTY_DIR

wpsD376.tmp

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中已基本无效,默认整型

wpsD396.tmp

示例代码:

wpsD3B6.tmp

3、常用方法

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

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

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

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

clearAllAssign   :清除所有赋值操作

clearAssign :清除指定赋值操作

clearCache     :清除缓存

configLoad :加载配置文件

clearConfig :清除配置信息

display :显示输出模板文件

fetch :载入文件到字符串

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

示例代码:

例1:assign与assignByRef的区别

wpsD3C7.tmp

例2:append方法

wpsD3E7.tmp

运行效果:

wpsD407.tmp

例3:clearAssign与clearAllAssign

wpsD58F.tmp

例4:configLoad加载配置文件

wpsD5AF.tmp

例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

wpsD5D0.tmp

效果:

wpsD5E0.tmp

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

示例代码:

wpsD5F1.tmp

、缓存篇

编译 < 缓存 < 静态化

1、Smarty中的缓存

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

2、使用Smarty缓存

示例代码:

wpsD601.tmp

运行效果:

wpsD67F.tmp

3、缓存作用

1)加快网站的访问速度

2)减少服务器的压力

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

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

答:编译文件

5、Smarty工作原理图

wpsD6FD.tmp

6、isCached方法

基本语法

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

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

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

wpsD75C.tmp

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

wpsD7AB.tmp

7、清除缓存

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

清除指定页面的缓存

$smarty->clearAllCache()

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

wpsD7BC.tmp

通过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”, “唯一值”)

实例代码:

wpsD7FB.tmp

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

9、缓存集合

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

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

示例代码:

wpsD81C.tmp

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

10、局部缓存

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

wpsD83C.tmp

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

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

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

示例代码:

例1:

wpsD85C.tmp

例2:

wpsD86D.tmp

例3:区域缓存

wpsD8BC.tmp

、过滤器

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:自定义函数

wpsD8EC.tmp

、整合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()方法

posted on 2016-05-06 00:49  山山未迟 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lifushan/p/5463962.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值