在 Laravel 的路由中将控制器声明为字符串的原因是什么?

问题描述 投票:0回答:1

我是 Laravel 的新手,我不明白为什么路由可以声明为字符串。我认为这背后有一个很好的理由,只是我不明白。有人可以解释一下吗?

我发现在 Laravel 中使用控制器声明路由的两种方法。

第一:

Route::get('hello', 'UserController@index');

第二个:

Route::get('hello1', [UserController::class, 'index']);

但是为什么可以使函数静态化并像这样调用它(我试过但没有成功):

Route::get('hello2', UserController::index());

我认为最后一个应该更容易在 IDE 中自动完成(第二个在我的 IDE 中工作,但仍然感觉过于复杂)。那么字符串语法的原因是什么?我再次成为 Laravel 的新手,所以了解它是我想念的东西。

php laravel syntax routes controller
1个回答
0
投票

控制器不能只调用方法,因为这会使以后更改变得更加困难。当控制器连接到方法细节时,很难保持代码的良好状态。

更好的是,控制器应该将方法引用作为参数传递。这样控制器就可以使用该方法而不会纠结于它的细节。这是一种更好的方法,因为它使代码更灵活,更易于处理。

这称为“依赖注入”,在框架中很常见。将依赖项注入组件比让它直接创建它们更好。这样组件将更容易测试和维护。

将方法引用作为参数传递比直接调用它要好。它有助于防止控制器绑定到方法细节。使代码更具适应性和可维护性。

© www.soinside.com 2019 - 2024. All rights reserved.