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