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代码缓存起来