ThinkPHP中的模板引擎和视图层

来源:互联网 发布:acrobat for mac 网盘 编辑:程序博客网 时间:2024/05/26 12:57

1,常用的模板引擎语法:

(1)变量输出  

{变量名}

还可以使用系统变量:

$Thinkphp.get.变量名}

系统变量分为几类:

1,包括 session cookie  server  get  post

  $Think.server.REMOTE_ADDR

2

3,特殊变量

ThinkPHP内部定义的变量

2,对变量使用函数

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

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

(3)包含文件

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

<include file=’’>

1file的值和display时的一样,

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

3,子模板中可以使用assign过来的变量

通常加载的公共的头部信息,或者尾部

导入文件

<import type=’js’ file=’’

import 的默认起始路径是Public 

display()

1, display(‘操作名’)  在当前模块下找操作名

2display(‘模块:操作’)  显示其他模块的操作名

3display(‘分组:模块:操作’) 显示不同分组下的不同模块的操作

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

(4)if判断

(6)volist标签

foreach循环更复杂

(7)if

<if condition=””>

<elseif condition=”条件”/>

<else/>

</if>

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

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

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

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

比较标签

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

引入子模板:

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

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

比如我们之前学的smarty

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

/Extend/Vendor

2,将smarty融入到ThinkPHP中去

修改配置文件

TMPL_ENGINE_TYPE’ =>   ‘Smarty’

如何实现的呢?

模板引擎驱动的概念:

配置系统:

基于配置文件的

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

如果采用了分组的话,配置也可以分组进行

由于使用了项目的模块分组,控制器分组,模板分组,配置也可以分组进行

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

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

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

使用全局函数 C()获得

此函数有两个功能:

1,获得;2,配置

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

缓存系统:

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

缓存分为两大类:

1,数据缓存

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

FileMemcacheDb...

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,局部不缓存

可以利用javascriptajax实现

其实是将javascript代码缓存起来

原创粉丝点击