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()方法要怎麼做?
這表示你沒有把aaa方法中的邏輯提取出來, orm可以放在Repository, 邏輯運算可以放在service中
通常是不建議這麼做的。
為什麼要這麼複雜而不是直接new一個AaaController然後直接呼叫方法?因為要處理依賴注入。
在B控制器裡創建一個A控制器的實例
這麼用是可以用,但是我不知道這麼用合不合規矩
(new AaaController ())->aaa();
你可以建造一個BaseController,其他兩個congtroller共同繼承這個controller,一些公用方法可以放置到BaseController裡面,或者加個helper檔
如果你非要這麼做的話,可以把被呼叫的方法定義成靜態方法。然後類別名稱直接呼叫。不過很不建議這麼做