LoginSignup
1
0

More than 5 years have passed since last update.

[Laravel] 5.4 => 5.5 のバージョンアップで気になった点を検証

Last updated at Posted at 2019-02-25

バージョンアップ

  • 5.4 から 5.5 へのバージョンアップを実施
  • その中で気になった変更について実際に動作させて検証

アップグレードガイド

https://readouble.com/laravel/5.5/ja/upgrade.html

リクエスト

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.5all()5.4only と同じ挙動になった
  • 5.5only() は存在しないパラメータ指定されても完全無視になった
// 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
1
0
0

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
1
0