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

ThinkPHP中的模板引擎和视图层

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