[英]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.