关于laravel 8.x 文档中 路由 章节中关于 显式绑定 隐式绑定的疑问?
首先在文档中对隐式绑定的示例以及描述我可以理解
代码如下
Route::get('api/users/{user}', function (App\Models\User $user) {
return $user->email;}
);
Laravel 会自动处理在路由或控制器方法中,与类型提示的变量名相匹配的路由段名称的的 Eloquent 模型。
我觉得这里对隐式绑定已经说的挺清楚了。只要路由的变量和类型提示变量名匹配就会自动处理。
但是后文对显式绑定的示例似乎没能说明白显式绑定是什么定义,或者说有什么用。
要注册显式绑定,请使用路由器的 model 方法为给定的参数指明参数对应的类。您应该在 RouteServiceProvider 类的 boot 方法的开头定义显式模型绑定
接下来,定义一个包含 {user} 参数的路由
文档中对显式绑定的示例如下
public function boot()
{
Route::model('user', \App\Models\User::class);
// ...
}
Route::get('profile/{user}', function (App\Models\User $user)
{
});
实际上如果不在boot()中定义如上的模型绑定,我访问该地址时依旧能够对模型进行正确解析。
并且这条在显示绑定中做示例的路由的定义似乎也符合隐式绑定的定义。
希望有人能为我解答一下,这两种绑定的具体区别?
推荐文章: