今回はコレクションの利用を促進するのが目的の記事。
と言っても自分も理解が浅いのでぜひともつよつよからの
ご助言も頂けたらうれしいです。
Collectionとは?
Illuminate\Support\Collection
クラスは
配列データを操作するための、書きやすく使いやすいラッパーです。
参照:https://readouble.com/laravel/8.x/ja/collections.html
配列データを書きやすく使いやすくとありますね
でもそもそも配列に対しても色んな関数があるし
今はコレクションなんて使わなくてもコード書けているから必要ないかな
なんて自分は考えていました、はい、、。
それではなんでコレクションを使ったほうがいいのか、
また、配列と何が違うのかを纏めていきます。
Collectionと配列の大きな違い
これは実務で自分もなるほど、たしかにな!と感じたことなのですが
通常の配列ってエラーが出やすいですよね???
なんのことかって
$user = [
'name' => 'daikin',
'age' => 31
];
上記のような情報があったときに
$user = [
'name' => 'daikin',
'age' => 31
];
{{ $user['name'] }} // daikin
daikin
が返ってくる
だけどもしname
がなかったらどうなるかと言うと
$user = [
'age' => 31
];
{{ $user['name'] }} // Undefined array key "name"
といった感じにエラーが返ってくる
今回は簡単なコードなのですが
案件によっては複雑な処理で求めたKeyが
取得出来てなかったりすることもあったりなかったり。
これがコレクションだとどうなるでしょう
$user = collect([
'name' => 'daikin',
'age' => 31
]);
{{ $user->get('name') }} // daikin
上記はコレクションになっているのでget
を使ってます。
ここまでは普通の配列と変わらないですね。
ではname
をなくしてみましょう。
$user = [
'age' => 31
];
{{ $user->('name') }} // null
なんとnull
が返ってきてるじゃないですか!
だからなんだよという声も聞こえてきそう、、僕がそうだったんですよね。
なにが変わるかと言うと
Keyが無いときの処理を考えなくてよくなります!
全く考えないこともないですがなにをしたいかというと
下記のときには条件をつけてエラー画面を出さないようにしないといけないです。
$user = [
'age' => 31
];
@if (isset($user['name']))
{{ $user['name']}} // nameはないのでこの処理は通らない
@endif
はいはいとなりますね。
これがコレクションだと、、、気づきましたか?
下記のような実装になりますよね。
$user = [
'age' => 31
];
{{ $user->('name') }} // nullなのでエラーも出なければ何も出力されない
そうなんですよ!
表示しないという処理が許容されるのであれば
コレクションだと変に条件を書かなくてよくなります!
Bladeに条件を書きなぐるのって悪いことではないけど
テストが手間になるのもあるし
その前の処理で変更があるとBladeにも修正を加えないといけなくなりますよね。
それがコレクションをうまく使うことで全体的にも整ったコードになるので
運用もしやすくなるんじゃないのって話だよね←言いたいだけ
僕はまだまだ未熟なのでもっともっとメリットがあるはずなので
これをきっかけにぜひともコレクションについて深堀りしてみてください
最後まで読んでいただきありがとうございます!
閉じる前にLGTMだけクリックお願いしますm(__)m