はじめに
Lumenを使っていて出会ったあれ?と思ったことをメモ。
大きな違いはララ帳のLUMENとLARAVELの違いなどにまとまっていますが、細かなところでもちょこちょこ違うようです。
問題に出会ったら追記していきます。
responseまわり
-
response
ヘルパーの中にLaravel\Lumen\Http\ResponseFactory
クラスがハードコードされています。(LaravelのはDIコンテナでIlluminate\Contracts\Routing\ResponseFactory
を解決するようになっています) -
Response
ファサードがありません。-
Response
ファサードのクラス自体はあるのですが、getFacadeAccessor()
が返すResponseFactoryContract
クラスがDIコンテナに登録されていないので使えません。 -
Laravel\Lumen\Application
クラスが登録するファサードのaliasのリストにも含まれていないしマニュアルにも記述がないので存在しないことになっていると思われます
-
routeまわり
- 名前をつけるのに
name()
メソッドが使えません。かわりに以下のように書きます。
$router->get('profile', [
'as' => 'profile', 'uses' => 'UserController@showProfile'
]);
envまわり
- 読み込む環境設定ファイルが
.env
固定になっていて、--env
オプションやAPP_ENV
環境変数の値でsuffix違いのを読み込む機能がありません。(軽量化のため?)- phpunitのときはテスト用のDB接続を使いたいといったときに面倒なので、自分は
bootstrap/app.php
を書き換えました。
- phpunitのときはテスト用のDB接続を使いたいといったときに面倒なので、自分は
testまわり
- Laravelでは5.5からtestsディレクトリが
Tests
というnamespace下に置かれたのですが、Lumenはnamespaceがないままです。 -
RefreshDatabase
トレイトがありません。 -
route()
ヘルパーが返す値がおかしいのでそのままでは使えません。- これについてはLaravel NewsにUsing Named Routes in a Lumen Testという記事があってどうすればいいかも書いてありますがやや面倒です。
おわりに
LumenはLaravelと似たようなものかと思うと細かいところが違っているので、Laravelに慣れているとはまりがちな印象。