对ThinkPHPR方法详解
ThinkPHP R方法用于调用一个控制器的操作方法,是进一步增强和补充的一种方法。R方法的调用格式:
R(项目: / / } {组基本模块/操作','参数','控制器的名字)
例如,我们定义了一种操作方法:
类将延伸动作{
公共功能细节($ id){
返回M(用户的)->找到($id);
}
}
然后你可以通过R方法调用这个操作方法(一般的R方法用于跨模块调用)。
$data = R(用户/细节,阵列(年));
表示用户控制器的调用(详细方法必须是公共类型)的详细方法,返回值是查询id为5的用户数据。如果调用操作方法没有任何参数,则第二个参数可以直接使用空白:
$data = R(用户/细节);
它还可以支持跨包和项目调用,例如:
R('admin /用户/细节,阵列(年));
表示在管理包下调用用户控制器的详细方法。
R('admin: / /用户/细节,阵列(年));
表示在管理项目下调用用户控制器的详细方法。
官方的建议是不要在同一水平上做太多的要求,否则会造成混乱,是公共电话应该被封装到一个单独的接口,可以使用多层thinkphp3.1控制器的新特点,添加一个接口,例如单独的控制器层,我们添加一个API控制层,
类userapi延伸动作{
公共功能细节($ id){
返回M(用户的)->找到($id);
}
}
然后,使用R的方法调用
$data = R(用户/细节,阵列(年),'api);
也就是说,R方法的第三个参数支持指定调用的控制器层。
同时,当R方法调用的操作方法,它可以支持设置C操作后缀('action_suffix)。如果你设置了操作方法后缀,你仍然不需要改变调用R的方式。