5.13 跨模块调用
匿名 · 更新于 2013/12/24
在开发过程中经常会在当前模块调用其他模块的方法,这个时候就涉及到跨模块调用,我们还可以了解到A和R两个快捷方法的使用。
例如,我们在Index模块调用User模块的操作方法
并且为了方便跨模块调用,系统内置了A方法和R方法。
A方法表示实例化某个模块,例如,上面的方法可以改为:
例如,我们在Index模块调用User模块的操作方法
class IndexAction extends Action{public function index(){//实例化UserAction$User = new UserAction();//其他用户操作//...$this->display(); //输出页面模板}}
并且为了方便跨模块调用,系统内置了A方法和R方法。
A方法表示实例化某个模块,例如,上面的方法可以改为:
class IndexAction extends Action{public function index(){//实例化UserAction$User = A('User');//其他用户操作//...$this->display(); //输出页面模板}}
3
事实上,A方法还支持跨分组或者跨项目调用,默认情况下是调用当前项目下面的模块。
跨项目调用的格式是:
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('[项目名://][分组名/]模块名/操作名',array('参数1','参数2'…))
例如:
R('User/info') //表示调用当前项目的User模块的info操作方法R('Admin/User/info') //表示调用Admin分组的User模块的info操作方法R('Admin://Tool/User/info') //表示调用Admin项目Tool分组的User模块的info操作方法
class UserAction extends Action{protected function info($id){$User = M('User');$User->find($id);//...}}
R('User/info',array(15))
