thinkphp 跨模块调用
2015-07-24 17:39
579 查看
5.13 跨模块调用
在开发过程中经常会在当前模块调用其他模块的方法,这个时候就涉及到跨模块调用,我们还可以了解到A和R两个快捷方法的使用。例如,我们在Index模块调用User模块的操作方法
class IndexAction extends Action{
public function index(){
//实例化UserAction
$User = new UserAction();
//其他用户操作
//...
$this->display(); //输出页面模板
}
}
因为系统会自动加载Action控制器,因此 我们不需要导入UserAction类就可以直接实例化。
并且为了方便跨模块调用,系统内置了A方法和R方法。
A方法表示实例化某个模块,例如,上面的方法可以改为:
class IndexAction extends Action{
public function index(){
//实例化UserAction
$User = A('User');
//其他用户操作
//...
$this->display(); //输出页面模板
}
}
4
事实上,A方法还支持跨分组或者跨项目调用,默认情况下是调用当前项目下面的模块。
跨项目调用的格式是:
A('[项目名://][分组名/]模块名')
例如:
A('User') //表示调用当前项目的User模块
A('Admin://User') //表示调用Admin项目的User模块
A('Admin/User') //表示调用Admin分组的User模块
A('Admin://Tool/User') //表示调用Admin项目Tool分组的User模块
R方法表示调用一个模块的某个操作方法,调用格式是:
R('[项目名://][分组名/]模块名/操作名',array('参数1','参数2'…))
例如:
R('User/info') //表示调用当前项目的User模块的info操作方法
R('Admin/User/info') //表示调用Admin分组的User模块的info操作方法
R('Admin://Tool/User/info') //表示调用Admin项目Tool分组的User模块的info操作方法
R方法还支持对调用的操作方法需要传入参数,例如User模块中我们定义了一个info方法:
class UserAction extends Action{
protected function info($id){
$User = M('User');
$User->find($id);
//...
}
}
接下来,我们可以在其他模块中调用:
R('User/info',array(15))
表示调用当前项目的User模块的info操作方法,并且id参数传入15
相关文章推荐
- PHP读取文件的多种方法
- LoadLibrary GetProcAddress FreeLibrary 近距应用
- php database search
- 移植 NTP客户端 到ARM
- php 判断字符串是否包含
- IIS下PHP的ISAPI和FastCGI比较
- 【YII2学习笔记】20150724-2
- 使用$_SESSION(变量名) 的方法
- php -- 反射ReflectionClass
- php正则表达式获取内容所有链接
- PHP正则表达式(转载)
- PHP RSA加解密示例
- 关于thinkphp模板引擎中变量输入的思考
- php 面向对象学习
- php文件上传之多文件上传
- Serv-U 15 架设FTP文件服务器 图文教程
- 【YII2学习笔记】20150724-1
- PHP文件操作类(有所改动)
- php -- PDO异常处理
- php 正则表达式匹配 斜杠问题