Laravel 5.7の更新を終えて、次は最新の5.8への更新です。こちらも私が経験したことをもとに、いくつかの重要な更新箇所をここで説明です。
ヘルパーの変更
以下は5.6の時点でのLaravelで使用できるヘルパーの一部です。
そして、以下が5.8(現時点の5.7でも)時点でのヘルパーです。
配列や文字列処理の関数が変わりましたね。
Psy Shell v0.9.9 (PHP 7.2.16 — cli) by Justin Hileman >>> $pen = ['color' => 'red']; => [ "color" => "red", ] >>> array_get($pen, 'color'); => "red" >>> Arr::get($pen, 'color'); => "red"
と今までのグローバルの関数ではなくネームスペース(Arr, Str)を使用しての関数に変わります。賛否両論があるようですが、幸いにも、5.8では両方の形態を対応しています。しかし、5.9からはArrやStrの関数に対応するグローバル関数は廃止となる予定です。
私は、Laravel Shiftのサービスをバージョン更新の最初のステップとして使用しているので、必要なクラスの宣言やヘルパーの変換はすべて、その更新サービス(有料)が行ってくれました。
変換した後に、1つ問題となったのは、エラーチェックに使用しているphanの出力です。phanはコード解析をして、プログラムにおいての疑わしい問題個所をリストしてくれます。変更後のコードでは、以下のような関数未定義のエラーがたくさん出ました。
... -app/Helpers/Lob.php:517 PhanUndeclaredStaticMethod Static call to undeclared method \Illuminate\Support\Arr::first -app/Helpers/Lob.php:691 PhanUndeclaredStaticMethod Static call to undeclared method \Illuminate\Support\Arr::get -app/Helpers/Lob.php:728 PhanUndeclaredStaticMethod Static call to undeclared method \Illuminate\Support\Arr::get ...
これは、phanをLaravelのプロジェクトで使用できるために使っている_ide helper.php
の問題のようです。
... namespace Illuminate\Support { /** * * */ class Arr { } /** * * */ class Str { } } ...
の部分を削除すれば、上のようなエラーを余計な吐き出すことはないです(参照)。
Cacheの時間単位の変更
こちらの変更は、Cache関連の関数を使用している開発者には大ごとです。キャッシュの保持時間の単位が今までの分単位から、より細かい時間を指定するために秒単位に変わります。
// Laravel 5.7 - 30分データを保持から、 Cache::put('foo', 'bar', 30); // Laravel 5.8 - 30秒データ保持に変わる Cache::put('foo', 'bar', 30); // 30分をキープしたいなら、 Cache::put('foo', 'bar', 30 * 60);メルマガ購読の申し込みはこちらから。