企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# ThinkPHP函数详解:R函数 [TOC] R函数用于调用某个控制器的操作方法,是A函数的进一步增强和补充。关于[A函数](http://www.kancloud.cn/curder/php/123662) R方法的调用格式 >[danger] **R('[资源://][模块/]控制器/操作');** 例如,我们定义了一个操作方法【方法需要时Public权限】为: ~~~ <?php namespace Home\Controller; use Think\Controller; class UserController extends Controller { // 列出某个用户的详细信息 public function detail($id){ return M('User')->find($id); } } ?> ~~~ 文件路径为 **APP_PATH/Home/Controlel/UserController.class.php** ## 当前模块下的控制器调用detail方法 ~~~ $detail = R('User/detail',array(1)); ~~~ 调用控制器的路径为 **APP_PATH/Home/Controlel/HomeController.class.php** ## 其他模块下的控制器调用detail方法 ~~~ $detail = R('Home/User/detail',array(1)); ~~~ ## 调用非控制器命名空间下detail方法 例如,我们定义了一个逻辑层操作方法【方法需要时Public权限】为: ~~~ <?php namespace Home\Logic; use Think\Controller; class UserLogic extends Controller{ public function detail($id){ return M('User')->find($id); } } ~~~ 文件位于 **APP_PATH/Home/Logic/UserLogic.class.php** 相同模块下调用的方法是 ~~~ $detail = R('User/detail',array(100000),'Logic'); ~~~ 调用文件位于 **APP_PATH/Home/Controller/HomeController.class.php** 不同模块下的调用方法是 ~~~ $detail = R('Home/User/detail',array(100000),'Logic'); ~~~ 调用文件位于 **APP_PATH/Admin/Controller/IndexController.class.php** 也就是说,R函数的第三个参数支持指定调用的控制器层。 同时,R函数调用操作方法的时候可以支持操作后缀设置C('ACTION_SUFFIX'),如果你设置了操作方法后缀,仍然不需要更改R方法的调用方式。