[英]How can I use a Laravel closure to call a controller's __invoke() method?
在我的Laravel應用程序中,我創建了一個名為InvokableController的控制器。 它包含以下功能:
public function __invoke()
{
return view('home');
}
我希望能夠調用__invoke方法,如下所示:
Route::get('/', function () {
$invokableObj = new InvokableController();
$invokableObj();
})->name('home');
盡管這可行:
Route::get('/', 'InvokableController')->name('home');
這不是我要找的東西。 我想以這種方式調用invoke方法:
$invokableObj = new InvokableController();
$invokableObj();
我嘗試在分配$invokableObj
的行上在InvokableController
之后加上或不加上括號,但沒有運氣。
我沒有收到任何錯誤消息。 我嘗試在閉包的底部返回其他內容,例如數字1,它在瀏覽器中呈現1,所以我知道我們已經遍歷了前面的代碼行。
APP_DEBUG
為true
。 其他錯誤消息在我搞砸的地方呈現。 這是否會導致某種邏輯錯誤?
它只是一個類,所以$invokableObj->__invoke()
應該可以正常工作。 或者您可以使用laravel DI:
app()->call(InvokableController::class . '@__invoke');
Route::get('/', function () {
return app()->call(InvokableController::class . '@__invoke');
// or
$invokableObj = new InvokableController();
return $invokableObj->__invoke();
})->name('home');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.