• 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()方法

  • 相关阅读:
    轮播效果
    获取用户请求过来的URL
    前端框架——AmazeUI学习
    评论功能——多说插件学习
    SqlServer中——查找杀死阻塞进程
    Java 时区(转)
    大型网站技术演进的思考(转)
    elasticsearch threadpool
    UML 类图
    elasticsearch No node available
  • 原文地址:https://www.cnblogs.com/lifushan/p/5463962.html
Copyright © 2020-2023  润新知