学习总结 :
模板:
一,变量的输出
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);