在把Lumen代码迁移到Laravel框架的时候,遇到了一些问题,虽然Lumen是基于Laravel的,但是也有一些不兼容的地方需要注意。在这里整理了一些Lumen和Laravel框架用法上的区别.
PS:这次迁移是从Lumen5.1迁移到Laravel5.2版本
Lumen是这样写的
$app->get('/', [
'uses' => 'IndexController@getIndex'
]);
而Laravel是这样的
Route::get('/', [
'uses' => 'IndexController@getIndex'
]);
Lumen:
$app->get('/docs/{id:[0-9]+}', [
'uses' => 'SupportController@getQuestionDetail', 'as' => 'question_detail'
]);
Laravel:
Route::get('/docs/{id}', [
'uses' => 'SupportController@getQuestionDetail', 'as' => 'question_detail'
])->where('id', '[0-9]+');
或者可以直接在RouteServiceProvider里面定义全局正则
public function boot(Router $router)
{
//
$router->pattern('id', '[0-9]+');
parent::boot($router);
}
路由组里面的Namespace
Lumen:
$app->group(['namespace' => 'App\Http\Controllers\Admin',
Laravel:
Route::group(['namespace' => 'Admin',
Lumen是在bootstrap/app.php里面:
$app->group(['namespace' => 'App\Http\Controllers'], function ($app) {
require __DIR__.'/../app/Http/routes.php';
require __DIR__.'/../app/Http/routesAdmin.php';
});
Laravel是在RouteServiceProvider里面:
$router->group(['namespace' => $this->namespace], function ($router) {
require app_path('Http/routes.php');
require app_path('Http/routesAdmin.php');
});