天天看點

tp5怎麼跨控制器調用别的方法

以前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();