天将奔烈

日々の記録や学習内容を書いていきます

Laravelのコレクションクラスについて

LaravelのCollectionクラスを雰囲気で使ってたので理解を深めるために調べたことを書いてみる。

Collection

配列データを使いやすくするためにラップしているクラス。

mapやfilterなど様々な便利メソッドが実装されている

よく使うメソッド集

コレクションメソッドは元のコレクションには影響せず、常に新しいコレクションを返却する。

map

コレクションを繰り返しで処理し、指定したコールバックから値を返却する。 下記の例のようにコレクション内のデータを加工したい場合などに頻繁に使用する。

$collection = collect(['hoge', 'fuga'])->map(function ($name) {
    return strtoupper($name);
});

print_r($collection); 
// Illuminate\Support\Collection Object
// (
//     [items:protected] => Array
//         (
//             [0] => HOGE
//             [1] => FUGA
//         )
// )

filter

指定したコールバックでコレクションをフィルタリングする。

$collection = collect([10, 20, 30, 40, 50])->filter(function ($item) {
    return $item > 30;
});
print_r($collection);
// Illuminate\Support\Collection Object
// (
//     [items:protected] => Array
//         (
//             [3] => 40
//             [4] => 50
//         )
// )

isEmpty

コレクションが空の場合にtrue、そうでない場合にfalseを返す。

collect([])->isEmpty()); // true
collect([1])->isEmpty(); // false

他にもたくさん使うんだけど、疲れてきたから今日はこの辺にしておこう。 ちなみにCollectionの実装自体は下記で見れるので時間ある時に見てみると結構面白いかも。

github.com