以前tp3.2版本跨控制器调用方法的时候用的是A方法 即
$IndexController = A("index");
return $IndexController->index();
这样就能获取index控制器下面index方法的数据了 。但是TP5这个方法用不了
是应为TP5取消了A方法 换成了controller
/**
* 用于实例化访问控制器
* @param string $name 控制器名
* @param string $path 控制器命名空间(路径)
* @return Think\Controller|false
*/
function controller($name,$path=''){
$layer = C('DEFAULT_C_LAYER');
if(!C('APP_USE_NAMESPACE')){
$class = parse_name($name, 1).$layer;
import(MODULE_NAME.'/'.$layer.'/'.$class);
}else{
$class = ( $path ? basename(ADDON_PATH).'\\'.$path : MODULE_NAME ).'\\'.$layer;
$array = explode('/',$name);
foreach($array as $name){
$class .= '\\'.parse_name($name, 1);
}
$class .= $layer;
}
if(class_exists($class)) {
return new $class();
}else {
return false;
}
}
同一个controller文件夹下的控制器可以直接调用 即
$index = controller('Index');
return $index->index();
不同控制器下的 文件想要掉用怎么办呢?比如mobile模块下想调用HOME模块下的短信发送方法
首先要new 这个控制器 在进行调用就可以了
use app\common\controller\Sms;
$SmsController = new Sms;
return $SmsController ->getSms();