首页 理论教育PHPMVC开发实战:控制器调用方法

PHPMVC开发实战:控制器调用方法

【摘要】:在ThinkPHP中,控制器是允许互相调用的。大体上可分为两种调用方式:一种为当前项目控制之间的调用;另一种为跨项目的控制器调用。为了便于使用,系统还提供2个快捷函数处理控制器的调用,下面结合示例代码分别介绍这2个快捷函数的使用方式。此外,如果项目使用模块分组方式,需要在控制器前加上“/”分隔符,跨项目控制器的调用方式如以下代码所示。上述代码表示实例化Admin项目下的Member控制器,然后调用user动作。

在ThinkPHP中,控制器是允许互相调用的。大体上可分为两种调用方式:一种为当前项目控制之间的调用;另一种为跨项目的控制器调用。被调用的控制器在初始化后,就可以当成一个实例类来使用。为了便于使用,系统还提供2个快捷函数处理控制器的调用,下面结合示例代码分别介绍这2个快捷函数的使用方式。

1.A函数

A函数用于实例化控制器,它的作用相当于new,A函数不仅支持调用本项目内的控制器,还支持跨项目调用控制器,如以下代码所示。

如上述代码所示,A("Member")表示实例化本项目中的Member控制器;然后调用Member控制器中的user方法,该方法代码如下所示。

控制器被实例化后得到的是实例对象,如果运行上面代码,假设当前模板分类中没有test.html(即Tpl/Index/test.html)那么系统将会抛出错误。因为在user方法中使用了$this->display(),这就意味着在当前动作(test动作)中输出模板(因为此处的user动作已被实例化,所以user并不能作为动作,而是作为类方法)。

如果需要调用的控制器不在当前项目下,那么需要使用“://”分隔符。此外,如果项目使用模块分组方式,需要在控制器前加上“/”分隔符,跨项目控制器的调用方式如以下代码所示。

2.R函数(www.chuimin.cn)

A函数只是负责调用控制器(实例化类),R函数提供更加简洁的操作。R函数可以在调用控制器时指定调用方法(动作),简化了操作步骤。R函数的使用格式如下。

R('[项目名://][分组名/]模块名/操作名',array('参数1','参数2'…))

下面将使用示例代码,演示R函数的使用。

如上述代码所示,表示实例化当前项目Member控制器,然后调用该控制器下user动作。如果需要调用跨项目的控制器,需要在控制器前加上“://”分隔符,如以下代码所示。

上述代码表示实例化Admin项目下的Member控制器,然后调用user动作。如果使用模块分组方式部署应用,那么需要在控制器前加上“/”分隔符。