またまたLaravelの更新の時期がやってきました。と言っても、またしても遅れての私のキャッチアップです。Laravel 6.xのバージョンは、Laravel 5.5と同様にLTSの長期サポートまでなので、バグの修正は、9/3/2021まで、セキュリティの修正は、9/3/2022までとあるので、できるならアップグレードしたいです。また、6.xのバージョンは、新サービスのサーバーレス対応のVaporでは必須ゆえに、Laravelを実行するサーバーのスケールアップに興味があるなら、なおさら頑張ってアップグレードする必要あります。
何が変わった?
さて、バージョン6.xともなると、大きな変更は少なくなってきています。私のプロジェクトでのアップグレードで気づいたことの報告をします。
まず忘れる前に、Laravel 6.xの更新には、最低php 7.2のバージョンが必要となります。と言っても、最新のphpは、バージョン7.4です。phpもLaravelもバージョンアップのペースが速い。もう少し遅くても、とも思います。
ヘルパーの変更
Laravel 5.8に更新で登場したのですが、配列や文字列のヘルパー関数が、クラスのstaticのメソッドに代わる、という話。例えば、array_only()
は、Arr::only()
に代わる。その時点では、両方使用できましたが、Laravel 6.xでは、もうグローバル関数の方はデフォルトでは使用できません。
それらを使用するには、以下を実行してパッケージを追加する必要あります。
$ composer require laravel/helpers
使用していたパッケージへの影響
phpunitのバージョンは、Laravel 5.8のバージョン7からバージョン8になりました。そして悲しいことに私が愛好していたデータベースのテストのphpunit/dbunitの開発・管理が止まりました。
ここでいつか紹介しようと思っていたのですが、紹介する前に作者の意向で開発ストップです。dbunitは、xmlファイルで用意したデータをユニットテストのためにデータベースにインポートしてくれる便利な機能があります。毎回のテストの前には、データをtruncateしてくれるのでいつでも空の状態から始めることができ、でテストの再現性を実現してくれます。
しかし、そこはオープンソースの強みというか、githubなどのサービスの便利さというか、他の開発者(以下のリンク)が早速にもレポをフォークしてphpunitバージョン8に対応してくれています。残念ながら、このパッケージのメインテナーとはならないようですが。
https://github.com/kornrunner/dbunit
これで暫くは凌げそうですが、この際に、Laravelのmigrationやfactoryを使用した、RefershDatabaseのトレイトを使ったデータベースのテストに書き換えていこうとも思います。
そして、そのステップ1として、前回の既存のDBからmigrationファイルを自動作成のパッケージの紹介でした。
しかし、このパッケージ、残念ながらLaravel6.xでは互換性で使えない、と思ったら対応しているこれまたレポをフォークしたパッケージがありました。
https://github.com/oscarafdev/migrations-generator
捨てる神があれば、拾う神ありです。助けられます。
ユーザー認証
Laravel 5.xでは、php artisan make:auth
の実行でユーザー認証の機能が追加できました。
Laravel 6.xでは、以下の実行が必要となります。
$ composer require laravel/ui $ php artisan ui bootstrap --auth
uiのタイプとしては、bootstrap, vue, reactの選択があります。これらの実行で、ユーザー認証に必要なrouteの追加や、コントローラーやブレードのファイルが作成されます。
メルマガ購読の申し込みはこちらから。