• php—Smarty-1 (18)


    smarty

    一、模板原理

    1、  为什么使用模板

    1)  场景:

    for($i=0;$i<$count;$i++){
    
           echo ‘<td>’.$row[‘proname’].’</td>
    
    }

    以上这种写法将html与php进行混编,不利于开发和维护

    2)  场景:

    我们现在开发了一个网站,经过一段时间的运营,客户对前台不满意,我们又开发一套界面,但运行之后,客户认为之前的样式比较好,经常更换网站样式

    解决以上两个问题的最好办法,就是使用模板

    2、  模板的具体实现

    模板的实现其实就是字符串替换

    1)  例1

    模板文件:

     

    PHP文件:

    1)  例2:

    Template类:

    PHP代码:

    上面的类文件中的代码,不够优化,我们可以使用比较流行的模板框架来实现自己的项目

    二、Smarty简介

    1、  什么是Smarty

    Smarty是一个基于PHP开发的PHP模板引擎。它提供了逻辑与外在内容的分离。

    2、  Smarty的特点

    l  速度

    l  编译型

    l  缓存技术

    l  插件技术

    l  语句自由 if/elseif/else/endif

    l  实时更新 :实时性要求比较高

    3、  配置

    l  http://smarty.php.net

    l  /lib

    l  Smarty 2.6       php4.0

    l  Smarty 3.0       php5.0

     1 解压smarty,进入解压目录

    Demo:案例

    Libs:Smarty源代码

    1)  进入libs目录,

    Plugins:自定义插件目录

    Sysplugins:系统插件目录

    Debug.tpl :在Smarty中,有调试功能,可以观察变量的值 ,调试窗口模板

    Smarty.class.php:Smarty核心类文件(入口文件)

    SmartyBC.class.php :Smarty3.0在2.0的基础上进行了升级,如果想使用2.0的功能,可以引用这个入口文件

    3)将libs目录复制到项目中,并重命名

    三、 快速入门

    1、  代码实现:

    模板代码:

    {$name}、{$age} :模板标记变量

    程序代码:

    2、  smarty工作原理:

    l  smarty将php源文件,首先编译成中间文件

    l  如果启用缓存,再根据编译文件生成缓存文件

    l  之后的每次访问都会访问编译文件

    l  如果启用缓存且有缓存文件而且没有过期,则直接访问缓存文件

    Smarty第一次运行某个程序时,会将这个程序生成一个编译文件

    以后,每次运行这个程序时,只要模板没有改变,就直接运行这个编译文件,如果模板改变了,就重新生成编译文件,再去运行。

    编译是指针对模板的编译

    3、  原理图:

    4、  分界符

    l  left_delimiter

    l  right_delimiter

    Smarty默认分界符是:”{“,”}”

    如果需要改变,可以设置上面两个属性

    模板代码:

    程序代码:

    5、  模板变量赋值

    Assign方法两个参数

    1)  模板变量名

    2)  值

    四、 路径设置

    1、  Smarty中的几个常用路径

    1)  模板路径           template_dir

    2)  编译路径           compile_dir

    3)  配置文件路径       config_dir

    4)  缓存文件路径       cache_dir

    以上四个路径是smarty类下的四个属性

    2、  在Smarty2.6中,这几个属性可以在类外设置的

    Class Smarty{

         Var $template_dir;

         Var $compile_dir;

         Var $config_dir;

         Var $cache_dir;

    }

    3、  在Smarty3.0中,这个属性是这样定义的:

    protected $template_dir

    protected $compile_dir

    这里定义成了受保护成员,也就是说,我们可以继承smarty类,然后可以拥有这几个受保护成员。

     

    在这里,我们发现,可以直接设置这几个受保护成员。

    当为一个不存在或不可访问的成员赋值时,自动执行set

    当对一个不存在或不可访问的成员取值时,自动执行get

    当取值或赋值时,首先检查,方法中$allowed数组是否定义该元素,如果定义过,则直接调用该数组元素对应的smarty方法

    通过以上代码,可以得知,在smarty3.0中,有八个方法专门针对于这四个属性取值和赋值

    l  setTemplateDir()

    l  setCompileDir()

    l  setConfigDir()

    l  setCacheDir()

    l  getTemplateDir()

    l  getCompileDir()

    l  getConfigDir()

    l  getCacheDir()

    建议大家使用以上方法进行路径设置

    在Smarty的构造方法中,为以上四个属性设置了默认值。

    通过以上程序输出smarty默认路径

  • 相关阅读:
    [导入]北京机场大巴路线表
    [导入]linux下java环境的安装与配置
    [导入]彻底治愈脚气
    [导入]学习效率低,没有拼命的行动怎么办?
    [导入]在RedHat Enterprise Linux AS4 下启用Oracle 9i企业管理器
    [导入]CZoneSoft Seeking CoOperator For Investment or Technology
    [导入]CZoneSoft 视频互动 : 新增音乐盒 方便个人K歌的时候播放伴奏音乐
    [导入]redhat as4下文件管理常用命令
    [导入]超级恶心的mms.tjcq2.com拦截不住地IE随机弹出广告
    CZoneSoft 音频、视频在线录制留言升级1
  • 原文地址:https://www.cnblogs.com/zhenghongxin/p/4470445.html
Copyright © 2020-2023  润新知