绝不 在路由配置文件里书写『闭包路由』或者其他业务逻辑代码,因为一旦使用将无法使用路由缓存。
路由器要保持干净整洁,绝不 放置除路由配置以外的其他程序逻辑。
必须 优先使用 Restful 路由,配合资源控制器使用。
一般资源路由定义:
Route::resource('photos', 'PhotosController');
使用 resource 方法时,如果仅使用到部分路由,必须 使用 only 列出所有可用路由:
Route::resource('photos', 'PhotosController', ['only' => ['index', 'show']]);
绝不 使用 except,因为 only 相当于白名单,相对于 except 更加直观。路由使用白名单有利于养成『安全习惯』。
利用 names 属性来修改,格式为 动作 => 名词 ,例如 'index' => 'photos.index', 为 PhotosController 里的方法 index ,对应路由命名 'photos.index'。完整例子如下:
Route::resource('photos', 'PhotosController', ['names' => [
'index' => 'photos.index',
'create' => 'photos.create',
'store' => 'photos.store',
'show' => 'photos.show',
'edit' => 'photos.edit',
'update' => 'photos.update',
'destroy' => 'photos.destroy'
]]);
例如这样的一个 URL:
https://packagist.org/packages/laravel/sco…
我们想让 laravel/scout 这个 URI 分段为参数,可以这样做:
Route::get('packages/{slashName?}', 'PackagesController@show')
->where('slashName', '(.*)');
此时 PackagesController 的 show 方法:
public function show($slashName, Request $request)
{
dd($slashName);
}
会输出:
“laravel/scout”
线上尽量使用路由缓存,路由缓存会大大减少注册所有路由所需的时间。在某些情况下,路由注册的速度甚至能快上 100 倍。要生成路由缓存,只需执行 artisan 命令
php artisan route:cache
清除路由缓存:
php artisan route:clear
参考文档:
https://learnku.com/docs/laravel-specification/5.5/router/502