单字母函数
A
实例化控制器
比如:我有两个控制器,在第一个控制器中想用第二个控制器的方法,你可以这样:
$User = A('User');
echo $User->method();
用A
函数来实例化一个User
控制器,然后你就可以使用这个控制器里面的方法了
R
R方法用于调用某个控制器的操作方法,是A方法的进一步增强和补充
上面A
方法中的例子可以写成:
$User = R("User","method");
echo $User;
C
C方法是tp中用来设置、获取、保存配置参数的方法。
设置
C(“参数名字“,值)
获取
C(参数名称)
参数名称不填,代表获取所有
D
和A函数类似,如果不使用D函数,就需要导入Model,然后new Model,剩下都是一样的。
但是D函数有2个有点,一是如果之前实例化过这个Model,那么就不再实例化了,剩资源;二是方便调试,如果不存在 这个Model,会抛出TP异常,非常人性化。
如果访问本项目的Model直接D("Model名称");
就可以了,如果打算跨项目访问,就使用D("Model名称","项目名称");
其他的就没什么说的了
M
M方法用于实例化一个基础模型类
M方法的调用格式:
M('[基础模型名:]模型名','数据表前缀','数据库连接信息')
1. 实例化基础模型类
//实例化User模型
$User = M('User');
//执行其他的数据操作
$User->select();
$User = M('User');
等效于$User = new Model('User');
,表示操作user表
M和D的区别
- 不需要自定义模型类,减少IO加载,性能较好。
- 实例化后只能调用基础模型类(默认是Model类)。
- 可以在实例化的时候指定表前缀、数据库和数据库的连接信息。
D方法的强大体现在你封装的自定义模型类有多强;随着新版tp框架基础模型类的功能越来越强大,M方法也比D方法越来越实用。
F
仅用于简单数据缓存,并且只能支持文件形式,不支持缓存有效期,因为采用的是PHP返回方式,所以其效率较S方法较高,因此我们也称之为快速缓存方法。
###F方法的特点是:
- 简单数据缓存;
- 文件形式保存;
- 采用PHP返回数据方式加载缓存;
- 支持子目录缓存以及自动创建;
- 支持删除缓存和批量删除;
写入和读取缓存
F('data','test data');
默认的保存起始路径是DATA_PATH
(该常量在默认配置位于RUNTIME_PATH.'Data/'
下面),也就是说会生成文件名为DATA_PATH.'data.php'
的缓存文件。
注意:确保你的缓存标识的唯一,避免数据覆盖和冲突。
下次读取缓存数据的时候,使用:
$Data = F('data');
我们可以采用子目录方式保存,例如:
F('user/data',$data); // 缓存写入
F('user/data'); // 读取缓存
就会生成DATA_PATH.'user/data.php'
缓存文件,如果user子目录不存在的话,则会自动创建,也可以支持多级子目录,例如:
F('level1/level2/data',$data);
如果需要指定缓存的起始目录,可以用下面的方式:
F('data',$data,TEMP_PATH);
获取的时候则需要使用:
F('data','',TEMP_PATH);
删除缓存
删除缓存也很简单,使用:
F('data',NULL);
第二个参数传入NULL
,则表示删除标识为data
的数据缓存。
支持批量删除功能,尤其是针对子目录缓存的情况,假设我们要删除user子目录下面的所有缓存数据,可以使用:
F('user/*',NULL);
又或者使用过滤条件删除,例如:
F('user/[^a]*',NULL);
S
thinkPHP的F
方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()
缓存方法支持有效期,又称动态缓存方法
用法:
设置
S('data','内容');
设置带有效期的
S('data','内容',100);//第三个参数是时间,单位秒
读取
$data = S('data');
删除
S('data',null);
U
U方法用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的URL地址,格式为:
U('地址','参数','伪静态','是否跳转','显示域名');
在模板中使用U方法而不是固定写死URL地址的好处在于,一旦你的环境变化或者参数设置改变,你不需要更改模板中的任何代码。
在模板中的调用格式需要采用 {:U('地址', '参数'…)}
的方式
传参
这三种都是可以的,等效
U('Blog/cate',array('cate_id'=>1,'status'=>1))
U('Blog/cate','cate_id=1&status=1')
U('Blog/cate?cate_id=1&status=1')
N
N方法属于计数器方法,被用于核心的查询、缓存统计的计数和统计。但是其实可以用于应用的其他计数用途,用法比较简单,调用格式:
N('计数位置'[,'步进值'],[是否缓存])
N('read',1,true);
var_dump(N('read'));
当第三个参数为true
时,计数会被缓存,否则不会带入下次统计。
G
G方法的作用包括标记位置和区间统计两个功能,取代的是debug_start、debug_end方法甚至Debug类才能完成的功能
标记位置
G('tag');
这就是把当前位置标记为tag
标签
运行时间统计
G('begin');
// ...其他代码段
G('end');
// ...也许这里还有其他代码
// 进行统计区间
echo G('begin','end').'s';
G('begin','end')
表示统计begin
位置到end
位置的执行时间(单位是秒),begin
必须是一个已经标记过的位置,如果这个时候end
位置还没被标记过,则会自动把当前位置标记为end
标签。
结果:0.0056s
默认统计精度是小数点后4位,如果需要可以这样设置:
G('begin','end',6).'s';//0.005587s
运行时内存开销统计
如果你的环境支持内存占用统计的话,还可以使用G方法进行区间内存开销统计(单位为kb)
echo G('begin','end','m').'kb';
第三个参数使用m表示进行内存开销统计,输出的结果可能是:625kb
同样,如果end标签没有被标记的话,会自动把当前位置先标记位end标签。
如果环境不支持内存统计,则该参数无效,仍然会进行区间运行时间统计。
I
用于更加方便和安全的获取系统输入变量,用法格式:
I('变量类型.变量名',['默认值'],['过滤方法'])
变量类型
变量类型 | 含义 |
---|---|
get | 获取get参数 |
post | 获取post参数 |
param | 自动判断请求类型获取get、post、put参数 |
request | 获取request参数 |
put | 获取put参数 |
session | 获取$_SESSION参数 |
cookie | 获取$_COOKIE参数 |
server | 获取$_SERVER参数 |
global | 获取$GLOBAL参数 |
注意:变量类型不区分大小写,但变量名严格区分大小写 默认值和过滤方法均属于可选参数。
用法:
常规获取
echo I('get.id'); // 相当于 $_GET['id']
echo I('get.name'); // 相当于 $_GET['name']
默认值
echo I('get.id',0); // 如果不存在则返回0
方法过滤
echo I('get.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串
获取整个变量
I('get.'); // 获取整个$_GET 数组