thinkphp模板技术

学习总结 :

模板:

一,变量的输出

1.  如何输出从控制器分配过来的数据

{$people.name}

{$people[‘name’}

2.  在模板中还可以使用系统变量,以$Think打头的

1,系统变量:类似于php的预定义的变量,session,cookie,get,post...

获得你的服务器的ip地址

获得服务器的名称

获得外部访问的ip地址

2,如何在模板中获得系统常量()

   系统常量可以参考 附录=》常量参考

{$Think.const.__SELF__}

{$Think.const.APP_NAME}

3,ThinkPHP内部定义的变量

<!-- 获得ThinkPHP内部定义的变量 -->

{$Think.now}

{$Think.template}

{$Think.version}

{$Think.LDELIM}

4,如何在模板文件中获得配置文件中的配置项的值

<!-- 获得配置文件中的配置项的值 -->

{$Think.config.db_name}

{$Think.config.url_model}

5,

(2)在ThinkPHP的模板中,如何对变量使用函数调节

 从控制器分配了一个字符串,在模板中,如何截取这个字符串

{$str|substr=###,5,3}

<br/>

{$str|substr=###,11}

在模板中,对变量使用函数,格式为:

{$变量|函数名=这个函数的参数列表(参数1,参数2,参数3)|函数2=参数1,参数2}

###代表变量在参数中的位置

如果当前参数为函数的第一个参数,可以不写

(3)在模板中如何加载外部文件

 通常在头部或者尾部一些公共的地方,我们把他加载进来,避免每个页面都去写代码

使用 <include file=””/>

file的用法和display()的用法是一样的

display()常用的4中形式:

(3)(4) 导入外部文件

 

if标签的使用:

  复选框:<input type='checkbox'

<if condition="$valeq 1">checked='true'<elseif condition="$val eq 2"/>checked='true'</if>/>

 

   <if condition=””>value1

  <elseif condition=”条件”/>value2

  <else/>

  </if>

condition里面要写成比较运算符,eq表示等于;neq表示不等于

 

volist和foreach标签非常类似,

(5)如何修改模板引擎的定界符

  在配置文件中,通过 TMPL_L_DELIM

<{$Think.config.TMPL_L_DELIM}>

<{$Think.get.id}>

‘TMPL_L_DELIM’=>’<{’

‘TMPL_R_DELIN’=>’}>’

在模板中嵌套的javascript代码中的{没有和模板的左右限定符发生冲突,为什么呢?

<scripttype="text/javascript">

functiongetCount(){

    alert('hello');

}

getCount();

</script>

在模板中,输出系统变量的时候

{$}花括号后面紧跟一个$符号,这样的话,TP框架会认为这是系统的变量

如果没有$ ,会直接当成是一个定界符来处理

(6)TP框架中,使用的是ThinkTemplate模板引擎,他是对smarty的一个加强,而且比市面上其他的模板引擎效率还高

如何查看一下,当前框架都有哪些模板引擎:

修改配置即可:TMPL_ENGINE_TYPE = ‘Smarty’

配置系统

项目分组:

前台和后台  Admin  Home

可以被浏览器直接访问的   Public

不可以被浏览器直接访问的  App

前台和后台的配置文件也可以分组:

Conf目录里面  Admin/config.php

               Home/config.php

 

如果分组的配置文件和通用的配置文件发生冲突之后,怎么处理:

以当前组的配置文件为主

在控制器中使用C()函数获得系统的配置文件数据

和在模板中通过系统变量$Think.config 获得配置文件效果是一样

//在控制器中如何获得配置文件的数据

$conf= C(‘DB_TYPE’)

Echo$conf

ThinkPHP的缓存机制:

(1)数据缓存

非常重要的概念:我们能不从数据库获得数据尽量不要调用数据库

因为从数据库获得数据效率是最低的

第一次访问的时候,我可以将数据缓存起来,下次在访问的时候,直接读取的是缓存文件

数据缓存,是将从数据库获得的数据保存到一个介质上,需要的时候直接从这个介质上读取

这些介质包括:

File(保存到文件中),Memcache(内存中,效率特别高)

那么如何将数据保存进去,又如何获得呢?

我们通过ThinkPHP的 Cache类来实现的:

我们通过调用Cahce类的方法获得对象,在通过这个对象来实现不同介质的数据的处理

通过传递不同的参数获得不同的数据处理对象

$cache= Cache::getInstance('File');

       $cache = Cache::getInstance('Db');

       var_dump($cache);

 

像Cache:类,通过传递不同参数获得不同的对象,这种模式就称之为 工厂模式

单例模式:这个类只获得一个对象,再调用这个对象方法 new Class()

 

实现缓存数据的增删改查:

增:

//增加缓存数据

       $cache->set('passwd','xiaoliang123',30);
set()函数有第三个参数,代表缓存的有效期

public function cache(){

       $cache =Cache::getInstance('File');

       //$cache= Cache::getInstance('Db');

       //var_dump($cache);

       //增加缓存数据

       $cache->set('passwd','xiaoliang123',30);

       var_dump($cache->set('time',date('Y-m-dH:i:s')));  

        var_dump($cache->set('people',array('name'=>'xiaobai','age'=>'23','gender'=>'female')));

      

    }

Php的序列化:serialize() 序列化

保存数据的时候,将数组或者对象序列化成字符串,但是这个字符串保存了数组或者对象之前的结构和内容,当我们需要获得这个数据的时候,再将序列化之后的字符串反序列化成我们需要的数组或对象(unserialize())

 

例子:

 

删:

publicfunction rm(){

       $cache = Cache::getInstance('File');

       $cache -> rm('people');

    }

改:

publicfunction revise(){

       $cache = Cache::getInstance('File');

       $cache ->set('people',array('name'=>'xiaohei','age'=>'25','gender'=>'female'));

    }

查:

publicfunction getCache(){

       $cache = Cache::getInstance('File');

       $passwd = $cache->get('passwd');

       $people = $cache->get('people');

       var_dump($people);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值