模板缓存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
模板和缓存
---------------------------------

posted @ 2013-05-28 23:05  xinyuyuanm  阅读(828)  评论(0编辑  收藏  举报