多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 跨模块调用 [上一页](44.html "上一页")[下一页](46.html "下一页") 在开发过程中经常会在当前模块调用其他模块的方法,这个时候就涉及到跨模块调用,我们还可以了解到A和R两个快捷方法的使用。 例如,我们在Index模块调用User模块的操作方法`class IndexAction extends Action{<br class="calibre5"></br>    public function index(){<br class="calibre5"></br>        //实例化UserAction<br class="calibre5"></br>        $User = new UserAction();<br class="calibre5"></br>        //其他用户操作<br class="calibre5"></br>         //...<br class="calibre5"></br>        $this->display(); //输出页面模板<br class="calibre5"></br>    }<br class="calibre5"></br>}`因为系统会自动加载Action控制器,因此 我们不需要导入UserAction类就可以直接实例化。 并且为了方便跨模块调用,系统内置了A方法和R方法。 A方法表示实例化某个模块,例如,上面的方法可以改为:`class IndexAction extends Action{<br class="calibre5"></br>    public function index(){<br class="calibre5"></br>        //实例化UserAction<br class="calibre5"></br>        $User = A('User');<br class="calibre5"></br>        //其他用户操作<br class="calibre5"></br>        //...<br class="calibre5"></br>        $this->display(); //输出页面模板<br class="calibre5"></br>    }<br class="calibre5"></br>}`事实上,A方法还支持跨分组或者跨项目调用,默认情况下是调用当前项目下面的模块。 跨项目调用的格式是: **A('\[项目名://\]\[分组名/\]模块名')** 例如:`A('User') //表示调用当前项目的User模块<br class="calibre5"></br>A('Admin://User') //表示调用Admin项目的User模块<br class="calibre5"></br>A('Admin/User') //表示调用Admin分组的User模块<br class="calibre5"></br>A('Admin://Tool/User') //表示调用Admin项目Tool分组的User模块`R方法表示调用一个模块的某个操作方法,调用格式是: **R('\[项目名://\]\[分组名/\]模块名/操作名',array('参数1','参数2'…))** 例如:`R('User/info') //表示调用当前项目的User模块的info操作方法<br class="calibre5"></br>R('Admin/User/info') //表示调用Admin分组的User模块的info操作方法<br class="calibre5"></br>R('Admin://Tool/User/info') //表示调用Admin项目Tool分组的User模块的info操作方法`R方法还支持对调用的操作方法需要传入参数,例如User模块中我们定义了一个info方法:`class UserAction extends Action{<br class="calibre5"></br>    protected function info($id){<br class="calibre5"></br>        $User = M('User');<br class="calibre5"></br>        $User->find($id);<br class="calibre5"></br>        //...<br class="calibre5"></br>    }<br class="calibre5"></br>}`接下来,我们可以在其他模块中调用:`R('User/info',array(15))`表示调用当前项目的User模块的info操作方法,并且id参数传入15 [上一页](44.html "上一页")[下一页](46.html "下一页")