2020/03/03 に Laravel7 がリリースされたので、ちょっとだけ見てみました。
(2020/3/19 現在、バージョンは 7.1.3)
https://laravel.com/docs/7.x/upgrade
Symphony 5 リリース
- Laravel7 では Symphony5 以上
- PHP 7.2.5 以上
- laravel/framework ^7.0
- nunomaduro/collision ^4.1
- phpunit/phpunit ^8.5
- facade/ignition ^2.0
- laravel/tinker ^2.0
- facade/ignition ^2.0
- report()、render() は、Exception から Throwable に変更
7.x にアップデート
composer.json 設定
composer.json に必要なライブラリのバージョンを書き換えます。
composer update
Authentication
「Authentication Scaffolding」が変更となったようです。
Scaffolding
- 認証の自動作成の改修
- Illuminate\Auth\Passwords\TokenRepositoryInterface
- recentlyCreatedToken メソッドが追加
Eloquent
Date Serialize
- Eloquent Model で Carbon の日付フォーマット改修
- ISO-8601 による、timezone と 秒の小数部の対応
- 現状の仕様をキープしたい場合は、serializeDate をオーバーライド
DB と Eloquent のフォーマットがことなると、Exception になるのでこれが改修されたか?検証が必要
Unique Route Names
- 同じ Route名を指定できなくなった
- 重複する場合は、重大なエラーが発生する
CORS サポート
- Cross-Origin Resource Sharing (CORS) でクロスドメイン通信
- 「\Fruitcake\Cors\HandleCors::class」を グローバルの Middleware に追加
CastsAttributes
「CastsAttributes」を implements することで、カスタムでキャストすることができます。
カスタムクラスに、get、set メソッドを追加し、Eloquent モデルに $casts を設定することで、自動的にキャストされるようです。
下記の例は、json_decode()、json_encode() を利用して JSON型のキャストを行なっています。
Blade
The component Method
- 「Blade::component」 から 「Blade::aliasComponen」に名称変更
Blade Component Tags
Viewコンポーネントクラスにプロパティやメソッドを設定することで、Blade の記述をシンプルにできます。
下記の例は、Alert コンポーネントクラスを作成し「alert.blade.php」に対して、class を動的に設定します。
Factory Types
- Laravel7 から factory types が削除された
プロジェクト作成
実際に、認証処理を実装していきます。
※Laravel7 の認証ページ
https://readouble.com/laravel/7.x/ja/authentication.html
バージョン確認
この時点で、 config/auth.php などが作成されています。
- config/auth.php
- app/User.php
- app/Http/Middleware/Authenticate.php
- database/migrations/xxxx_create_users_table.php
- database/migrations/xxxx_create_password_resets_table.php
- database/factories/UserFactory.php
app/User.php
最近のバージョンアップが早く、仕様も日々変わりつつあるのでチェックが必要ですね。