• 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();

  • 相关阅读:
    python zip()与zip(*ziped)以及list(zip(a,b))
    通信原理(第七版)-樊昌信-第一章-绪论-重要知识点
    通信原理-自相关与互相关函数的关系
    通信原理(第七版)-樊昌信-第二章-确知信号-重要知识点
    C#Linq的10个练习
    C#从委托、lambda表达式到linq总结
    C#的隐式类型、匿名类型、自动属性、初始化器
    MVC开发之Razor的使用
    Markdown常用语法
    MVC开发之注入容器Ninject的使用
  • 原文地址:https://www.cnblogs.com/hamilton/p/5709194.html
Copyright © 2020-2023  润新知