Lumen和Laravel用法上的区别整理(一)

2016年03月18日 in coding using tags Lumen , Laravel

在把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

路由组里面的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');
});