在学习laravel中发现,路由与模型绑定中http://www.golaravel.com/docs/4.1/routing/#route-model-binding
function(User $user)中的User $user如何理解。 function()中不应该是传入参数吗?User $user是什么东西?
人生最曼妙的风景,竟是内心的淡定与从容!
$user是整个关于user数据获取的model,文档说的挺清楚地,如果一旦有profile/1的路由访问,这时候整个anonymous function只是callback函数中参数的一个值,而$user是anonymous function的一个参数。这时候php会把整个anonymous function转换成一个对象实例,你就可以在此函数里使用model中对应{{user}}数据做操作了。不理解也没事,先这么用,用多了慢慢就理解了。我也是写js才慢慢了解的,php早年这么写的少,最近现代框架中出现频率特别高
$user
//先创建了一个model Route::model('user', 'User'); //再将这个model传入特定路由中去 Route::get('profile/{user}', function(User $user) { // });
因为在路由的这个
这个其实是用于捕获入口类型的。 是对数据的一种限制,更安全些。
这是类型约束 以function(User $user)为例,好处是,假如你不知道此函数需要传一个类User的实例,如果你传了一个数组或其它的类型,PHP会立即在函数入口抛出可捕获的致命错误.如果你写成function($param),你就只能等运行了一段代码之后才知道,原来参数错误了(后悔莫及)...
function(User $user)
function($param)
$user就是参数,User 为$user的类型
$user
是整个关于user数据获取的model,文档说的挺清楚地,如果一旦有profile/1的路由访问,这时候整个anonymous function只是callback函数中参数的一个值,而$user是anonymous function的一个参数。这时候php会把整个anonymous function转换成一个对象实例,你就可以在此函数里使用model中对应{{user}}数据做操作了。不理解也没事,先这么用,用多了慢慢就理解了。我也是写js才慢慢了解的,php早年这么写的少,最近现代框架中出现频率特别高因为在路由的这个
这个其实是用于捕获入口类型的。
是对数据的一种限制,更安全些。
这是类型约束
以
function(User $user)
为例,好处是,假如你不知道此函数需要传一个类User的实例,如果你传了一个数组或其它的类型,PHP会立即在函数入口抛出可捕获的致命错误.如果你写成function($param)
,你就只能等运行了一段代码之后才知道,原来参数错误了(后悔莫及)...$user就是参数,User 为$user的类型