搜尋

首頁  >  問答  >  主體

laravel裡面一個controller中的方法要呼叫另一個controller中的方法要怎麼做?

laravel裡面一個controller中的方法要呼叫另一個controller中的方法要怎麼做?

例如:
AaaController.php

##
<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class AaaController extends Controller
{
    public function aaa()
    {
        //...
    }
}

BbbController.php

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class BbbController extends Controller
{
    public function bbb()
    {
        //这里要调用aaa(),应该怎么做?
    }
}

BbbController中的bbb()方法要呼叫AaaController中的aaa()方法要怎麼做?

仅有的幸福仅有的幸福2780 天前804

全部回覆(6)我來回復

  • 巴扎黑

    巴扎黑2017-05-16 16:49:42

    這表示你沒有把aaa方法中的邏輯提取出來, orm可以放在Repository, 邏輯運算可以放在service中

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-16 16:49:42

    通常是不建議這麼做的。

    $ctrl = \App::make(\App\Http\Controllers\AaaController::class);
    \App::call([$ctrl, "aaa"]);

    為什麼要這麼複雜而不是直接new一個AaaController然後直接呼叫方法?因為要處理依賴注入。

    回覆
    0
  • PHPz

    PHPz2017-05-16 16:49:42

    在B控制器裡創建一個A控制器的實例
    這麼用是可以用,但是我不知道這麼用合不合規矩

    回覆
    0
  • PHPz

    PHPz2017-05-16 16:49:42

    (new AaaController ())->aaa();

    回覆
    0
  • 迷茫

    迷茫2017-05-16 16:49:42

    你可以建造一個BaseController,其他兩個congtroller共同繼承這個controller,一些公用方法可以放置到BaseController裡面,或者加個helper檔

    回覆
    0
  • 大家讲道理

    大家讲道理2017-05-16 16:49:42

    如果你非要這麼做的話,可以把被呼叫的方法定義成靜態方法。然後類別名稱直接呼叫。不過很不建議這麼做

    回覆
    0
  • 取消回覆