バージョンアップ
-
5.4
から5.5
へのバージョンアップを実施 - その中で気になった変更について実際に動作させて検証
アップグレードガイド
リクエスト
hasメソッド
\$request->hasメソッドは、入力が空文字列やnullであってもtrueを返すようになりました。
以前のhasの振る舞いを提供するため、新しい$request->filledメソッドが追加されました。
検証
-
5.5
では「要素が存在すれば」true
となる
// GETパラメータ
?foo=test&bar
// 検証コード
dd($request->has('foo'), $request->has('bar'), $request->has('baz'));
// 5.4
true
false
false
// 5.5
true
true
false
onlyメソッド
onlyメソッドはリクエストペイロードに実際に存在する属性のみの返すようになりました。
onlyメソッドの古い振る舞いを使いたい場合は、allメソッドを代わりに使用してください。
検証
-
5.5
のall()
は5.4
のonly
と同じ挙動になった -
5.5
のonly()
は存在しないパラメータ指定されても完全無視になった
// GETパラメータ
?foo=test&bar
// 検証コード:5.4(all()は引数受け取れない)
dd($request->all(), $request->only(['foo', 'bar', 'baz']));
// 検証コード:5.5(all()は引数受け取るようになった)
dd($request->all(['foo', 'bar', 'baz']), $request->only(['foo', 'bar', 'baz']));
// 5.4
[
"foo" => "test"
"bar" => ""
]
[
"foo" => "test"
"bar" => ""
"baz" => null
]
// 5.5
[
"foo" => "test"
"bar" => ""
"baz" => null
]
[
"foo" => "test"
"bar" => ""
]
Tinker
Laravel Tinkerはアプリケーションクラスを参照する際の、省略した名前空間をサポートするようになりました。
この機能にはComposerクラスマップの最適化が必要であるため、composer.jsonファイルのconfigセクションへ、optimize-autoloaderディレクティブを追加する必要があります。
optimize-autoloader
-
comopser.json
へ追加する
...
"autoload": {
"psr-4": {
"App\\": "app/",
"Modules\\": "app/Modules"
}
},
...
"config": {
...
"optimize-autoloader": true
}
検証
$ php artisan tinker
Psy Shell v0.9.9 (PHP 7.1.26 — cli) by Justin Hileman
// 5.4
>>> Modules\Models\BlogModel::all(); // OK
>>> BlogModel::all(); // NG
// 5.5
>>> Modules\Models\BlogModel::all(); // OK
>>> BlogModel::all(); // OK