Laravel 5.4から可能になったRouteの書き方の紹介です。
2017年1月24日(現地時間)にLaravelフレームのバージョン5.4がリリースされ、
ブラウザテストツール Laravel Duskを始めとする機能追加や 既存機能の改良されました。
Webフレームワークで、切っても切れないの処理の1つがRoutingですが、
Laravel 5.4からRouteが今までより 少しスッキリと書くことが可能になりました。
下のスニペットはLaravel5.3で可能なRouteファイルの書き方です。
group
を使ってルーティングを'article
'にまとめ、
namespace
使って'App\Http\Controllers\Article
'からコントローラーを参照するようにしています。
// before
Route::group(['prefix' => 'article', 'namespace' => 'article'],
function () {
#GET /article
Route::get('/', 'ArticleController@index')
->name('index');
#GET /article/{num}
Route::get('/{id}', 'ArticleController@post')
->name('post')
->where('id', '[0-9]+');
#POST /article/comment
Route::post('/comment', 'ArticleController@comment')
->name('comment')
->middleware('auth');
});
続いてはバージョン5.4から可能になったRouteです。
// Laravel 5.4から可能になった書き方
Route::prefix('article')->namespace('Article')
->group(function () {
# /article
Route::name('index')
->get('/', 'ArticleController@index');
# /article/{num}
Route::name('post')
->get('/{id}', 'ArticleController@post')
->where('id', '[0-9]+');
# /article/comment
Route::name('/comment')
->middleware('auth')
->post('comment', 'ArticleController@comment');
});
先程の5.3で書いたスニペットと同じ処理ですが、group
メソッドの書き方に自由度が増えました。
今まではgroupメソッド内の引数にprerix
やnamespace
等パラメーターを配列で渡す必用がありましたが、
バージョン5.4からは独立したメソッドとして' prefix
'、' namespace
'が渡せるようになりました。
// Laravel 5.4での書き方
Route::prefix('article')->namespace('Article')
->group(function () {
// do something
});
// Laravel 5.3での書き方 *Laravel 5.4でも動作します
Route::group( ['prefix' => 'article', 'namespace' => 'article'],
function () {
// do something
});
また、getやpost等のHTTP処理の書き方にも自由度が増えました。
今まではRouteクラスから最初にHTTPヴァーヴを渡して処理を書く必要がありましたが、
5.4からはname
メソッドを最初に渡すことができます。
nameメソッドが最初に渡せることで、どのRouteがどんな役割を持っているかわかり易くなりますね。
# Laravel 5.4から可能な書き方
Route::name('post')
->get('/{id}', 'ArticleController@post')
->where('id', '[0-9]+');
# Laravel 5.3の書き方 *Laravel 5.4でも可能です
Route::get('/{id}', 'ArticleController@post')
->name('post')
->where('id', '[0-9]+');
以上がLaravel 5.4から可能になったRouteの書き方でした。
システムが大きくなってくると、groupメソッドのネストや
Routeファイルが数百行になることは珍しくないので 今まで以上にスッキリと書くことができます。
Laravelで新しいプロジェクトを始める人や、5.4にバージョンアップした人はゼヒ×2使ってみてください!
Laravel 5.4 Document : Routing