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