您的位置:首页 > 编程语言 > PHP开发

ThinkPHP中的模板引擎和视图层

2013-05-27 20:12 225 查看
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=’’>

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

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

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

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

导入文件

<import type=’js’ file=’’

import 的默认起始路径是Public

display()

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

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

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

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

(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,数据缓存

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

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代码缓存起来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: