访问控制器的实例化通常是自动完成的,系统会根据URL地址解析出访问的控制器名称自动实例化,并且调用相关的操作方法。
如果你需要跨控制器调用的话,则可以单独实例化:
方法一:
$User = new \Home\Controller\UserController();
方法二:A
$User = A(‘User’); //当前模块
$Blog = A(‘Admin/Blog’);
方法三:R * 直接调用方法
R(‘User/showName’) //调用当前模块的 showName 方法
R(‘Admin/User/showName’)//调用 Admin 分组 User 模块的 showName 方法
R 方法也支持对调用的方法传入参数
R 方法的第二个参数为数组,该数组将作为被调用操作的参数传入。R( ‘User/showName’,array(5) );
A 还是 R?
从上面的例子可以看出,A 方法和 R 方法都可以调用其他模块的操作,那是使用 A 方法好还是 R 方法好呢?在此建议如下:如果要使用其他模块内的多个方法,那么建议使用 A 方法,通过对象的方式调用该模块的不同方法,避免多次实例化对象;如果只需要使用其他模块内的其中一个方法,那么无疑 R 方法是最简洁的。
在模板文件里的访问
{:R(‘Apply/form’, array(“name”=>$data[‘type’],“type”=>‘add’))}