【CakePHP】コレクションクラスについて

7月に入って一気に暑さが増してきましたね。

自分は日本の四季の中で夏が一番好きです!

先日大阪で4年ぶりの天神祭りがあったので、参加してみたところものすごい人混みに驚きました・・・。

ですが沢山の屋台があったので、食べ物を購入しまくってしっかりと祭り気分を味わうことができました!

夏もまだ始まったばかりなので、沢山のイベントに参加して夏を満喫したいなと思いました。

さて今回は業務で使用しているフレームワークのCakePHPのコレクションクラスに触れる機会が

あったので共有させていただければと思います。

Collectionとは

配列または Traversable オブジェクトを操作するためのツールのセットです。

操作するための様々なメソッドがあり、より直感的に操作することが可能になります。

every()

フィルター関数で真偽のテストを行うことができます。

コレクション内のすべての要素が条件を 満たしているかどうかを確認する際に使用します。

$collection = new Collection($people);
$allYoungPeople = $collection->every(function ($person) {
    return $person->age < 21;
});

map()

元のコレクション内の各オブジェクトに適用されるコールバックの出力に基づいて

新しいコレクションを作成します。

$items = ['a' => 1, 'b' => 2, 'c' => 3];
$collection = new Collection($items);

$new = $collection->map(function ($value, $key) {
    return $value * 2;
});

// $result には [2, 4, 6] が含まれています。
$result = $new->toList();

// $result には ['a' => 2, 'b' => 4, 'c' => 6] が含まれています。
$result = $new->toArray();

終わりに

今回は2つのメソッドをご紹介いたしましたが

CakePHPのドキュメントを確認するとまだまだ沢山のメソッドがありました。

こういったメソッドをすぐに確認できるように今後もこのような備忘録を残していけたらいいなと思いました。