我是 Laravel 的新手,我不明白为什么路由可以声明为字符串。我认为这背后有一个很好的理由,只是我不明白。有人可以解释一下吗?
我发现在 Laravel 中使用控制器声明路由的两种方法。
第一:
Route::get('hello', 'UserController@index');
第二个:
Route::get('hello1', [UserController::class, 'index']);
但是为什么可以使函数静态化并像这样调用它(我试过但没有成功):
Route::get('hello2', UserController::index());
我认为最后一个应该更容易在 IDE 中自动完成(第二个在我的 IDE 中工作,但仍然感觉过于复杂)。那么字符串语法的原因是什么?我再次成为 Laravel 的新手,所以了解它是我想念的东西。
控制器不能只调用方法,因为这会使以后更改变得更加困难。当控制器连接到方法细节时,很难保持代码的良好状态。
更好的是,控制器应该将方法引用作为参数传递。这样控制器就可以使用该方法而不会纠结于它的细节。这是一种更好的方法,因为它使代码更灵活,更易于处理。
这称为“依赖注入”,在框架中很常见。将依赖项注入组件比让它直接创建它们更好。这样组件将更容易测试和维护。
将方法引用作为参数传递比直接调用它要好。它有助于防止控制器绑定到方法细节。使代码更具适应性和可维护性。