Was soll ich tun, wenn eine Methode in einem Controller in Laravel eine Methode in einem anderen Controller aufrufen m?chte?
Zum Beispiel:
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()
{
//這里要調(diào)用aaa(),應(yīng)該怎么做?
}
}
Wie soll die bbb()-Methode in BbbController die aaa()-Methode in AaaController aufrufen?
這說(shuō)明你沒(méi)有把a(bǔ)aa方法中的邏輯提取出來(lái), orm可以放在Repository, 邏輯操作可以放在service中
通常是不建議這么做的。
$ctrl = \App::make(\App\Http\Controllers\AaaController::class);
\App::call([$ctrl, "aaa"]);
為什么要這么復(fù)雜而不是直接new一個(gè)AaaController然后直接調(diào)用方法?因?yàn)橐幚硪蕾囎⑷搿?/p>
你可以建一個(gè)BaseController,其他兩個(gè)congtroller共同繼承這個(gè)controller,一些公用方法可以放置到BaseController里面,或者加個(gè)helper文件
如果你非要這么做的話,可以把被調(diào)用的方法定義成靜態(tài)方法。然后類名直接調(diào)用。不過(guò)很不建議這么做