これまでLaravel7を使っていた場合、Laravel8に移行する際に絶対に知っておくべきポイントを3つにまとめました。
「一体これまでと、どこを変えたらいいんだろう」
「必要な部分だけダイジェストで知りたい」
という方はぜひご一読ください。
バージョンアップときの対応も掲載しています。
Laravel8とLaravel7の違いで知らないと困る3つのポイント
それでは重要度順に、紹介していきます。
Laravel8はルート設定の方法が変わった
Laravel8では、ルート設定でコントローラーのパスを入れねばいけません。
たとえば、/test ページを表示する際、Testという名前のコントローラーファイルの testメソッドを使うとします。
Laravel7ではこのように書いていました。
1 |
Route::get('/test', 'Test@test'); |
Laravel8では、次のようにパスを正確に入れる必要があります。
1 |
Route::get('/test', '\App\Http\Controllers\Test@test'); |
ルート設定でのパスの入れ方3種類
パスを入れるには3つの方法あります。
3つ目の方法が一番ラク。
★方法①
まず、先ほどのように毎回入れる方法。
1 |
Route::get('/test', '\App\Http\Controllers\Test@test'); |
★方法②
次に、ルートファイルの最初に入れてしまう方法。
この場合は、コントローラーの書き方も変える必要があります。
1 2 3 |
use \App\Http\Controllers\Test; Route::get('/test', [Test::class, 'test']); |
★方法③
さいごは app/Providers/RouteServiceProvicer.php に入れる方法。
29行目あたり【protected $namespace = ‘App\\Http\\Controllers’;】がコメントアウトされています。
コメントアウトを取って、有効にします。
↓
こうしておけば、これまでどおりのルート設定で大丈夫です。
実はこれ、Laravel7と同じ方法です。
バージョンアップしたときは気にしなくてOK
Laravel7で作っていたプロジェクトを8にバージョンアップしたことで、既存のルートが崩れることはありません。
というのも先ほど書いた通り、Laravel7ではRouteServiceProvicer.php にパスが指定されおり、そのままの設定を使えるからです。
実際に試してみましたが、大丈夫でした。
Laravel8はモデルファイルの場所が変わった
ふたつめは、モデルファイルの場所が変わったこと。
今まではappフォルダの直下でした。
これが、app/Modelsの下になったのです。
バージョンアップしたときの動作
なおこの点も、Laravel7から8にバージョンアップしたときに影響はありません。
モデルファイルを作ると、これまでどおりappフォルダの直下に置かれます。
なぜなら、バージョンアップしたときにappフォルダ内にModelsフォルダがないためです。
ただし、appフォルダ直下にModelsフォルダを作ってあげると、次からはデフォルトのモデルファイルの保存場所がapp/Modelsに変わります。
これも実験してみました。
うっかり作ってしまうと面倒なので、要注意です^^;
Laravel8はJetstreamが利用可能に
Laravelは、フロントエンド用にlaravel/ui パッケージをインストール後、Bootstrap, React, Vue のいずれかのスカフォールドをインストールすることができます。
これらをインストールする際、認証機能も一緒にインストールするオプションがあります。
Laravel8でも引き続き上記は利用可能ですが、新たにJetstreamを認証のスカフォールドとして使えるようになりました。
Jetstreamには、ログイン・ユーザー登録・メール認証・セッション管理・チーム管理を行うためにセキュアで便利な機能がそろっています。
わたしも使ってみましたが、その高機能さに驚きました!
知っておいて損がない機能なので、もしご存じない場合は、こちらをご覧ください。
バージョンアップしたときは気にしなくてOK
これまでのBootstrap版も使えるので、バージョンアップときは気にしなくて大丈夫でしょう。
むしろ既に出来上がったWebアプリにあとからJetstreamを組み込むのは、無理な気も…
さいごに
Laravel8を使うときに知っておくべき3つの点はこちら。
今回のまとめ
- ルート設定の方法が変わる→RouteServiceProvicer.php を書き換えればOK
- モデルファイルのデフォルトの場所がapp から app/modelsに変更
- Jetstreamがインストール可能に
なお、migrationファイルが圧縮できるようになったこと、factory機能が変わったことなど、知っておいたほうが良いレベルの変更点もあります。
その機能を使っている人には影響がある、という項目も。
細かい点はこちらのファイルにまとめているので、気になったら見てみてください。
バージョン7→8のときの変更点:
バージョン8の機能:
ひとことメモ
この部分は【protected $namespace = null】となっている場合もあります。
その場合は、【protected $namespace = null】をコメントアウトで無効にし、次の一行をいれます。