Completed
Push — master ( cdd593...deaa6d )
by Krzysztof
18s queued 13s
created

Searcher   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
c 1
b 0
f 0
lcom 1
cbo 4
dl 0
loc 56
ccs 15
cts 15
cp 1
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A search() 0 9 2
A searchForModel() 0 14 3
1
<?php
2
3
namespace KGzocha\Searcher;
4
5
use KGzocha\Searcher\Context\SearchingContextInterface;
6
use KGzocha\Searcher\FilterImposer\Collection\FilterImposerCollectionInterface;
7
use KGzocha\Searcher\FilterModel\Collection\FilterModelCollectionInterface;
8
use KGzocha\Searcher\FilterModel\FilterModelInterface;
9
10
class Searcher implements SearcherInterface
11
{
12
    /**
13
     * @var FilterImposerCollectionInterface
14
     */
15
    private $imposerCollection;
16
17
    /**
18
     * @var SearchingContextInterface
19
     */
20
    private $searchingContext;
21
22
    /**
23
     * @param FilterImposerCollectionInterface $imposerCollection
24
     * @param SearchingContextInterface $searchingContext
25
     */
26 1
    public function __construct(
27
        FilterImposerCollectionInterface $imposerCollection,
28
        SearchingContextInterface $searchingContext
29
    ) {
30 1
        $this->imposerCollection = $imposerCollection;
31 1
        $this->searchingContext = $searchingContext;
32 1
    }
33
34
    /**
35
     * @inheritdoc
36
     */
37 1
    public function search(
38
        FilterModelCollectionInterface $filterCollection
39
    ) {
40 1
        foreach ($filterCollection->getImposedModels() as $filterModel) {
41 1
            $this->searchForModel($filterModel, $this->searchingContext);
42
        }
43
44 1
        return $this->searchingContext->getResults();
45
    }
46
47
    /**
48
     * @param FilterModelInterface $filterModel
49
     * @param SearchingContextInterface $searchingContext
50
     */
51 1
    private function searchForModel(
52
        FilterModelInterface $filterModel,
53
        SearchingContextInterface $searchingContext
54
    ) {
55
        $imposers = $this
56 1
            ->imposerCollection
57 1
            ->getFilterImposersForContext($searchingContext);
58
59 1
        foreach ($imposers as $imposer) {
60 1
            if ($imposer->supportsModel($filterModel)) {
61 1
                $imposer->imposeFilter($filterModel, $searchingContext);
62
            }
63
        }
64 1
    }
65
}
66