beautify code, ajout méthode pluck et toArray à l'objet collection
This commit is contained in:
@@ -57,8 +57,7 @@ class Collection implements IteratorAggregate, Countable
|
|||||||
|
|
||||||
public function map(callable $fn): Collection
|
public function map(callable $fn): Collection
|
||||||
{
|
{
|
||||||
$tmp = array_map($fn, $this->elements);
|
return new Collection(array_map($fn, $this->elements));
|
||||||
return new Collection($tmp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function each(callable $fn): void
|
public function each(callable $fn): void
|
||||||
@@ -68,9 +67,24 @@ class Collection implements IteratorAggregate, Countable
|
|||||||
|
|
||||||
public function filter(callable $fn): Collection
|
public function filter(callable $fn): Collection
|
||||||
{
|
{
|
||||||
$tmp = array_filter($this->elements, $fn, ARRAY_FILTER_USE_BOTH);
|
return new Collection(array_filter($this->elements, $fn, ARRAY_FILTER_USE_BOTH));
|
||||||
$collect = new Collection($tmp);
|
}
|
||||||
return $collect;
|
|
||||||
|
public function pluck(string $key): Collection
|
||||||
|
{
|
||||||
|
return new Collection(array_map(function ($item) use ($key) {
|
||||||
|
if (is_object($item)) {
|
||||||
|
return isset($item->$key) ? $item->$key : null;
|
||||||
|
}
|
||||||
|
if (is_array($item)) {
|
||||||
|
return isset($item[$key]) ? $item[$key] : null;
|
||||||
|
}
|
||||||
|
}, $this->elements));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function toArray(): array
|
||||||
|
{
|
||||||
|
return $this->elements;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function empty(): bool
|
public function empty(): bool
|
||||||
|
|||||||
@@ -50,5 +50,26 @@ test("collection", function () {
|
|||||||
return $item + $carry;
|
return $item + $carry;
|
||||||
},$init);
|
},$init);
|
||||||
expect($reduce)->toBe(55);
|
expect($reduce)->toBe(55);
|
||||||
|
|
||||||
|
$array = $coll->toArray();
|
||||||
|
expect($array)->toBeArray();
|
||||||
|
expect(count($array))->toBe(11);
|
||||||
|
|
||||||
|
$obj = new \stdClass();
|
||||||
|
$obj->key = "test";
|
||||||
|
$obj->val = 1;
|
||||||
|
|
||||||
|
$obj2 = new \stdClass();
|
||||||
|
$obj2->key = "test2";
|
||||||
|
$obj2->val = 2;
|
||||||
|
|
||||||
|
$collo = new Collection([$obj,$obj2]);
|
||||||
|
expect($collo)->toBeInstanceOf(Collection::class);
|
||||||
|
expect(count($collo))->toBe(2);
|
||||||
|
|
||||||
|
$pluck = $collo->pluck("key");
|
||||||
|
expect($pluck)->toBeInstanceOf(Collection::class);
|
||||||
|
expect(count($pluck))->toBe(2);
|
||||||
|
expect($pluck->first())->toBe("test");
|
||||||
});
|
});
|
||||||
|
|
||||||
Reference in New Issue
Block a user