zoukankan      html  css  js  c++  java
  • PHP smarty复习

    Smarty:模板技术

    实现功能:前后分离。

    原理:主要通过Smarty核心类实现,调用display方法,将模板文件读取,用正则进行替换,替换完保存到临时文 件,将临时文件加载到当前页面。

    配置文件(入口文件):对Smarty类进行实例化,设置文件的保存路径

    如果在页面使用Smarty模板,需要将配置文件引入到当前页面。

    浏览器要访问的页面是后台页面(.php),最终在浏览器看到的页面是模板页面(.html或.tpl)

    模板里面的文件路径:基于.php文件的相对路径,如果不使用相对路径可以使用绝对路径。

    模板里面显示变量:

    1.变量要写在Smarty标记之间,变量名以$开头

    <{$test}>

    2.支持所有类的数据,包括数组(关联数组),对象

    关联数组在模板显示的时候,除了可以使用php语法之外,还支持点语法 <{$attr.name}>

    模板里面读取配置文件

    1.将配置文件加载到当前页面
    <{config_load file='test.conf'}>

    2.读取配置中的内容
    <{#color#}>

    3.如果配置文件中分了块,怎么读某一块的配置
    <{config_load file='test.conf' section='块名'}>

    Smarty保留变量

    $smarty.const 读取常量 例如:CSS,JS,图片的存放路口

    变量调节器:

    关键字:modifier

    1.系统自带的变量调节器:转大写 转小写 首字母大写 截取字符串 拼接字符串
    2.自定义变量调节器:

    变量调节器存放目录下新建文件:modifier.调节器名称.php
    在该文件里面新建一个方法:function smarty_modifier_调节器名($str){}
    $str参数代表调用该调节器的变量
    最后该方法要有一个返回值

    函数:

    关键字:function普通函数,block块函数

    1.系统自带的函数:if foreach

    <{if 条件}>
    满足条件输出内容
    <{else}>
    不满足条件输出内容
    <{/if}>

    <{if 条件1}>
    满足条件输出内容
    <{elseif 条件2}>
    不满足条件1满足条件2执行
    <{/if}>

    比较的时候,有备用词可以使用

    <{foreach $shuzu as $v}>

    $v@index 从0开始的索引
    $v@first 代表是第一个循环的
    $v@last 代表是最后一个循环的

    <{/foreach}>

    2.自定义函数

    找到存放函数插件的文件夹在里面新建文件:function.函数名.php (block.函数名.php)
    在该文件里面新建一个方法:function smarty_function_函数名($args){}
    function smarty_block_函数名($args,$nr,$smarty,$bs){}

    参数$args:调用该函数传入的属性关联参数
    参数$nr:block块之间所夹的内容
    参数$smarty:对象
    参数$bs:是否是第一次调用(开始标记里面调用)

    该方法最终有返回值

    模板继承:

    extends block

    父模板:一般用来放网页的头和尾
    需要预留一定的区域来让子页面修改替换
    使用<{block name='neirong'}><{/block}>
    一般来说,父模板里面至少预留两块区域,其中一块是在head里面 另一块是在body里面

    子页面:一般继承父模板放该页面实现的功能
    <{extends file=''}>
    完善替换父模板中预留的区域:
    <{block name='neirong'}><{block}>


    缓存:

    做法:
    1.定义一个缓存文件存放的路径
    2.判断缓存文件是否存在或者是否过期
    3.如果文件不存在或过期:
    开启内存缓存ob_start();
    取内存中的内容ob_get_contents();
    将内容存放到缓存文件中file_put_contents();
    关闭内存缓存ob_flush();
    4.如果文件存在或没有过期:
    将缓存文件引入当前页面include();

  • 相关阅读:
    解决UITableView中Cell重用机制导致内容出错的方法总结
    Hdu 1052 Tian Ji -- The Horse Racing
    Hdu 1009 FatMouse' Trade
    hdu 2037 今年暑假不AC
    hdu 1559 最大子矩阵
    hdu 1004 Let the Balloon Rise
    Hdu 1214 圆桌会议
    Hdu 1081 To The Max
    Hdu 2845 Beans
    Hdu 2955 Robberies 0/1背包
  • 原文地址:https://www.cnblogs.com/yy01/p/5714667.html
Copyright © 2011-2022 走看看