26
14

More than 5 years have passed since last update.

Laravel 5.8 -> 6.0 LTS Upgrade Guide が更新されました!

Posted at

こちらのツイートの通り、 Laravel 6.0 は LTS サポートになる予定とのことです。

そして、 Laravel 5.8 から 6.0 へのアップグレードガイドも更新されました(リリースまでもう少し更新が入るかもしれません)。

以下、要約。

Upgrade dependencies

composer.jsonlaravel/framework の依存を ^6.0 にして composer update をかけます。

6.0 から SemVer を採用するので、 7.0 になるまで破壊的変更は含まれない予定となっています。そのため、バージョン指定は 6.0.0~6.x.x となる ^6.0 を指定する形になります。

もちろん、このアップグレードがほかの dependencies で対応しているかしっかりと確認する必要があります。これは以前からのアップグレードと同様です。

特に今回は 5.8 から 6.0 へのアップグレードのため、多くのライブラリは laravel/framework: ^5.6 といった形で依存していて、しっかりとした更新対応が入るまでアップグレード出来ないのではないでしょうか。

認可処理

Authorized Resources

$this->authorizeResource(Post::class, 'post'); のような形でリソースコントローラに対してコンストラクタでポリシーを設定している場合、 index メソッドは元々認可をスルーしていましたが、 viewAny メソッドをポリシークラス側に定義しない限り認可で拒否されるように変更になりました。

RegisterController

RegisterController の register registered メソッドを上書きしている場合は、親メソッドを呼ぶ必要が出てきました。イベントの発行場所なども変わっているので注意が必要です。

Authorization Responses

Illuminate\Auth\Access\Response クラスが変更になりました。

Database

プライマリキー型定義

パフォーマンス最適化のため、 protected $keyType = 'string'; のように、 string 系の型をプライマリキーとして保持している場合は、このプロパティを指定する必要が出ました。

Email 確認

email/resend ルーティングが GET から POST に変わりました。そのため、 view 側で CSRF を追加するなどの修正が必要です。

ヘルパー

str_plugarray_get などのヘルパー関数が今まで src/Illuminate/Support/helpers.php に実装されていましたが、 Illuminate\Support\Str または Illuminate\Support\Arr の静的メソッドを使うことが推奨されるようになりました。

また、 composer require laravel/helpers として別パッケージ化されたそれらのメソッドを要求することも可能です。

Localization

Lang::transLang::get に、 Lang::transChoiceLang::choice にメソッド名が変更になりました。

Lang::getLang::getFromJson は同じ扱いになったので、 Lang::getFromJson ではなく Lang::get を呼ぶことが推奨されるようになりました。

__('foo')@lang('foo') を使っている場合は特に変更は不要ですね。

キュー

php artisan queue:work を今まで呼んだ場合、失敗したジョブを無限に繰り返すようになっていました。今後は 1 度のみ再実行されます。無限に再実行したい場合は --tries=0 を指定します。

Input Facade

Input Facade は削除されました。 Input::get を使っていた場合は Request::input を使ってください。 Input はそのまま Request Facade に置き換え可能です。


他にも規模の小さい破壊的変更がありますが、ごらんのとおり今までと同じレベルの変更度合いですね。安心しました。

今後は 6.0.0 も 6.9.10 も同じコードで利用出来るようになるはずです(セキュリティリリースなど致命的なものは除く)。

また、大体半年置きにメジャーアップデートが行われていましたが、それは継続するようなので、恐らく来年の2月くらいに Laravel 7.0 が出るのではないかと思います。

※上記のリリースノートはまだ途中のものなので、今後他にも破壊的変更が含まれる可能性があることに注意してください。
※上記は要約で省略している部分もあります。

26
14
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
14