zoukankan      html  css  js  c++  java
  • 模板缓存ThinkPHP中的模板引擎和视图层

    每日一贴,今天的内容关键字为模板缓存

        1.经常使用的模板引擎语法:

        (1)变量输出 

        {变量名}

        还可以应用系统变量:

        {$Thinkphp.get.变量名}

        系统变量分为几类:

        1,包含 sessioncookie  server  get post

      $Think.server.REMOTE_ADDR

        {$Think.server.REMOTE_ADDR}

      {$Think.get.name }

        <!-- 以上写法还可以写成 -->

     {$_SERVER.REMOTE_ADDR}

       {$_SERVER.SERVER_ADDR}

        <!--系统常量-->

        2,{$Think.const.MODULE_NAME}

        {$Think.__SELF__}

        {$Think.__APP__}

        3.特殊变量

        ThinkPHP内部定义的变量

        <!--特使变量 -->

        {$Think.version}

     {$Think.now}

        {$think.template}

        {$think.LDELIM}

        {$think.RDELIM}

        2.对变量应用函数

        <!-- 对变量应用函数-->

        {$list|implode=','|substr=0,7}

        {变量名|函数1=参数1,参数2|函数2=参数1,参数2}

        其中###取代当前变量的参数位置,如果当前变量或者函数的执行结果是下一个函数的第一个参数时,可以不写

        (3)包含文件

        应用include标签包含外部的文件

        <includefile=’’>

        1,file的值和display时的一样,

        2,include是闭合标签,要以/结尾

        3,子模板中可以应用assign过去的变量

        <!-- 引入外部文件 -->

        <include file="User:reg"/>  注意单标签必须加 < />

        平日加载的大众的头部信息,或者尾部导入文件

        <inmport type='js' file='' import 的默许其实路径是Public

        display()

        1.display(‘操纵名’) 在当前模块下找操纵名

        2.display('模块:操纵')显示其他模块的操纵名

        3.display('分组: 模块 :操纵')显示不同分组下的不同模块的操纵

        $this->display('Admin:Goods:user');

        4,display(‘模板文件的全路径’)

        $this->display('./APP/Tpl/Admin/Goods/user.html')

        4.if判断

        5.volist标签

        比foreach循环更复杂

        (7)if

        <ifcondition=””>

        <elseifcondition=”条件”/>

        <else/>

        </if>

        定界符冲突的情况,我们的模板只剖析{紧跟$的情况,因此在js代码中,即使不修改定界符也没问题

        thinkPHP给我们供给的模板引擎,内置的模板引擎----ThinkTemplate

        它的执行效率要高于市面上的其他模板引擎,他引用了一些smarty的模板引擎的货色以及其他模板引擎的货色

        如果从控制器分配对象,在模板中应用 : 获得 

        比拟标签

        <比拟标签 name=”变量” value=”值”>内容</比拟标签>

        引入子模板:

        将footer.html  和  header.html 放到Public目录中

        ThinkPHP如何应用其他的模板引擎:

        比如我们之前学的smarty,

        1,加载smarty的类文件,在ThinkPHP框架中,已将此工作做好

        /Extend/Vendor

        模板和缓存

        ,将smarty融入到ThinkPHP中去

        修改配置文件

        ‘TMPL_ENGINE_TYPE’ =>   ‘Smarty’

        如何实现的呢?

        模板引擎驱动的概念:

        配置系统:

        基于配置文件的

        每日一道理
    书,各种各样的书。书,寄托着人类热切的希望;书,蕴含着人类丰富的感悟。提起书,会有说不完的话语……

        项目的配置文件在项目的Conf/conf.php

        如果采用了分组的话,配置也可以分组停止

        由于应用了项目的模块分组,控制器分组,模板分组,配置也可以分组停止

        在Config目录存在 Admin/Config.php  Home/Config.php

        规则:如果组配置文件与通用配置文件 冲突的话,以当前组的为准。

        如何手动获得配置文件中配置项的值

        应用全局函数 C()获得

        此函数有两个功能:

        1,获得;2,配置

        模板和缓存

        获得的是Home的配置变量的值,也就是说,如果分组的配置文件和项目的配置文件冲突,以分组的配置为准

        缓存系统:

        任何真实的项目都离不开缓存

        缓存分为两大类:

        1,数据缓存

        将数据保存到某个介质中,这个介质包含:

        File,Memcache,Db...

        在ThinkPHP中利用Cache类实现 数据缓存的处理

        不同的介质通过不同的操纵对象来实现,也就是说通过cache类获得不同的操纵对象,来实现将数据保存在不同的介质中

        例如:

        如果想将数据保存在File(文件)中,只需要调用Cache类的getInstance(‘File’)方法

        同理:

        模板和缓存

        像这个cache类,它的作用就是根据不同的参数,生成不同的对象,拥有这种功能的类就称之为工厂模式

         

        cache类保存在ThinkPHP/Lib/Core/Cache.class.php

        类的方法可以通过当前对象访问,也可以通过类来访问

        数据的增编削查:

        PHP的序列化是什么意思呢?

        一个描述PHP数据的函数,返回值是一个字符串,有的时候为了将数据转化为字符串存起来,但是还要保持数据原有的结构和内容,就可以应用这个函数:

        数据存在哪里呢?

        增:

        模板和缓存

        模板和缓存

        第三个参数为设置缓存的有效期:时光为秒

        模板和缓存

        删:

        模板和缓存 

        改:

     模板和缓存

        查:

        模板和缓存

        如何设置缓存的有效期?

        模板和缓存

        2,如何做页面缓存

        将模板的结果缓存起来

        利用ThinkPHP的配置实现:

        1,是否开启缓存

        2,哪些页面需要缓存

        一般是前台需要缓存,所以配置应当写到Home的缓存文件中

        必需要设定规则,否则即使开启了也不会缓存

        规则是一个数组:规定了哪些控制器,哪些动作需要缓存,缓存文件的保存名称,缓存文件的有效期

        'tmp' => array('{:action}',1000),

        通过id,单模板多缓存

        命名的规则:可以应用 模块名 动作名 get参数等。。可以做单模板多缓存

        3,局部不缓存

        可以利用javascript,ajax实现

        实际上是将javascript代码缓存起来

    文章结束给大家分享下程序员的一些笑话语录: 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。
    硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
    项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
    软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

    --------------------------------- 原创文章 By
    模板和缓存
    ---------------------------------

  • 相关阅读:
    django之快速分页
    python django 使用 haystack:全文检索的框架
    django的admin或者应用中使用KindEditor富文本编辑器
    Ubuntu安装微信
    python 基本模块
    [LeetCode] 860. 柠檬水找零 lemonade-change(贪心算法)
    [LeetCode] 455. 分发饼干 assign-cookies(贪心算法)
    [LeetCode] 122. 买卖股票的最佳时机ii best-time-to-buy-and-sell-stock-ii(贪心算法)
    [LeetCode] 225. 用队列实现栈
    [LeetCode] 155. minStack 设计最小栈
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3104927.html
Copyright © 2011-2022 走看看