Code Duplication    Length = 43-43 lines in 2 locations

src/AllOfFilter.php 1 location

@@ 5-47 (lines=43) @@
2
3
namespace Graze\ArrayFilter;
4
5
class AllOfFilter extends AbstractFilter
6
{
7
    /**
8
     * @var ArrayFilterInterface[]
9
     */
10
    private $filters;
11
12
    /**
13
     * @param array $filters
14
     */
15
    public function __construct(array $filters = [])
16
    {
17
        foreach ($filters as $filter) {
18
            $this->addFilter($filter);
19
        }
20
    }
21
22
    /**
23
     * @param ArrayFilterInterface $filter
24
     */
25
    public function addFilter(ArrayFilterInterface $filter)
26
    {
27
        $this->filters[] = $filter;
28
    }
29
30
    /**
31
     * Loop through all the filters and only return if all match
32
     *
33
     * @param array $data
34
     *
35
     * @return bool
36
     */
37
    public function matches(array $data)
38
    {
39
        foreach ($this->filters as $filter) {
40
            if (!$filter->matches($data)) {
41
                return false;
42
            }
43
        }
44
45
        return true;
46
    }
47
}
48

src/OneOfFilter.php 1 location

@@ 5-47 (lines=43) @@
2
3
namespace Graze\ArrayFilter;
4
5
class OneOfFilter extends AbstractFilter
6
{
7
    /**
8
     * @var ArrayFilterInterface[]
9
     */
10
    private $filters;
11
12
    /**
13
     * @param array $filters
14
     */
15
    public function __construct(array $filters = [])
16
    {
17
        foreach ($filters as $filter) {
18
            $this->addFilter($filter);
19
        }
20
    }
21
22
    /**
23
     * @param ArrayFilterInterface $filter
24
     */
25
    public function addFilter(ArrayFilterInterface $filter)
26
    {
27
        $this->filters[] = $filter;
28
    }
29
30
    /**
31
     * Loop through all the filters and only return if all match
32
     *
33
     * @param array $data
34
     *
35
     * @return bool
36
     */
37
    public function matches(array $data)
38
    {
39
        foreach ($this->filters as $filter) {
40
            if ($filter->matches($data)) {
41
                return true;
42
            }
43
        }
44
45
        return false;
46
    }
47
}
48