Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
AbstractCollection
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
4 / 4
4
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 fromArray
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 fromMap
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 guard
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3// ╔════════════════════════════════════════════════════════════╗
4// ║ MIT Licence (#Expat) - https://opensource.org/licenses/MIT ║
5// ║ Copyright 2026 Frederic Poeydomenge <dyno@phexium.com>     ║
6// ╚════════════════════════════════════════════════════════════╝
7
8declare(strict_types=1);
9
10namespace Phexium\Domain\Collection;
11
12use ArrayAccess;
13use Override;
14use Phexium\Domain\Collection\Trait\TraitArrayAccess;
15use Phexium\Domain\Collection\Trait\TraitCollectionCore;
16use Phexium\Domain\Collection\Trait\TraitCollectionFunctional;
17use Phexium\Domain\Collection\Trait\TraitCollectionMutation;
18use Phexium\Domain\Collection\Trait\TraitCollectionNavigation;
19use Phexium\Domain\Collection\Trait\TraitCollectionSearch;
20use Phexium\Domain\Collection\Trait\TraitCollectionTransformation;
21
22abstract class AbstractCollection implements CollectionInterface, ArrayAccess
23{
24    use TraitArrayAccess;
25    use TraitCollectionCore;
26    use TraitCollectionFunctional;
27    use TraitCollectionMutation;
28    use TraitCollectionNavigation;
29    use TraitCollectionSearch;
30    use TraitCollectionTransformation;
31
32    protected array $collection = [];
33
34    final public function __construct(array $collection = [])
35    {
36        $this->guard($collection);
37
38        $this->collection = $collection;
39    }
40
41    #[Override]
42    public static function fromArray(array $collection): static
43    {
44        return new static($collection);
45    }
46
47    #[Override]
48    public static function fromMap(array $collection, callable $fn): static
49    {
50        return new static(array_map($fn, $collection));
51    }
52
53    protected function guard(array $collection): void {}
54}