thinkphp中的各种方法
1.A方法:用于在内部实例化控制器,调用格式
A('[项目://][分组/]模块','控制器层名称')
最简单的用法:1.$User = A('User');
表示实例化当前项目的UserAction控制器(这个控制器对应的文件位于Lib/Action/UserAction.class.php),如果采用了分组模式,并且要实例化另外一个Admin分组的控制器可以用:1.$User = A('Admin/User');
也支持跨项目实例化(项目的目录要保持同级)1.$User = A('Admin://User');
表示实例化Admin项目下面的UserAction控制器
2.C方法:ThinkPHP用于设置、获取,以及保存配置参数的方法,使用频率较高。
3.D方法:用于实例化自定义模型类,是ThinkPHP框架对Model类实例化的一种封装,并实现了单例模式,支持跨项目和分组调用,调用格式如下:
D('[项目://][分组/]模型','模型层名称') 方法的返回值是实例化的模型对象。
D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化Model基类,同时对于已实例化过的模型,不会重复去实例化。
D方法最常用的用法就是实例化当前项目的某个自定义模型,例如:1.// 实例化User模型
$User = D('User');
会导入当前项目下面的Lib/Model/UserModel.class.php文件,然后实例化UserModel类,
所以,实际上的代码可能和下面的等效:1.import('@.Model.UserModel');
$User = new UserModel();
但是如果使用D方法的话,如果这个UserModel类不存在,则会自动调用1.new Model('User');
D方法可以支持跨分组和项目实例化模型,
例如:1.//实例化Admin项目的User模型
D('Admin://User')
//实例化Admin分组的User模型
D('Admin/User')
4.M方法:用于实例化一个基础模型类,和D方法的区别在于:
1、不需要自定义模型类,减少IO加载,性能较好;
2、实例化后只能调用基础模型类(默认是Model类)中的方法;
3、可以在实例化的时候指定表前缀、数据库和数据库的连接信息;
M方法的调用格式:
M('[基础模型名:]模型名','数据表前缀','数据库连接信息')
1、实例化基础模型(Model)类
//实例化User模型
$User = M('User');
//执行其他的数据操作
$User->select();
2、实例化其他公共模型类
$User = M('CommonModel:User');
改用法其实等效于:
$User = new CommonModel('User');
5.N方法:属于计数器方法,被用于核心的查询、缓存统计的计数和统计。但是其实可以用于应用的其他计数用途,用法比较简单,调用格式:
N('计数位置'[,'步进值'])
例如,我们要统计页面中的查询次数,可以用1.N('read',1);
6.U方法:用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的URL地址,格式为:
U('地址','参数','伪静态','是否跳转','显示域名');
在模板中的调用格式需要采用 {:U('地址', '参数'…)} 的方式
7.R方法:用于调用某个控制器的操作方法,是A方法的进一步增强和补充。关于A方法的用法见这里。
R方法的调用格式:
R('[项目://][分组/]模块/操作','参数','控制器层名称')
例如,我们定义了一个操作方法为:1.class UserAction extends Action {
public function detail($id){
return M('User')->find($id);
}
}
那么就可以通过R方法在其他控制器里面调用这个操作方法(一般R方法用于跨模块调用)1.$data = R('User/detail',array('5'));
表示调用User控制器的detail方法(detail方法必须是public类型),返回值就是查询id为5的一个用户数据。如果你要调用的操作方法是没有任何参数的话,第二个参数则可以留空,直接使用:1.$data = R('User/detail');
也可以支持跨分组和项目调用,例如:1.R('Admin/User/detail',array('5'));
表示调用Admin分组下面的User控制器的detail方法。1.R('Admin://User/detail',array('5'));
表示调用Admin项目下面的User控制器的detail方法。
8.L方法:用于启用多语言的情况下,设置和获取当前的语言定义。
调用格式:L('语言变量'[,'语言值'])