Completed
Push — master ( be2280...4a4169 )
by Andrii
01:43
created

AbstractAttribute   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 2
dl 0
loc 32
ccs 0
cts 17
cp 0
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
getOperatorRules() 0 1 ?
A getRuleForOperator() 0 10 2
A getValidatorFor() 0 6 1
1
<?php
2
/**
3
 * HiAPI Yii2 base project for building API
4
 *
5
 * @link      https://github.com/hiqdev/hiapi
6
 * @package   hiapi
7
 * @license   BSD-3-Clause
8
 * @copyright Copyright (c) 2017, HiQDev (http://hiqdev.com/)
9
 */
10
11
namespace hiapi\query\attributes;
12
13
use hiapi\validators\AttributeValidatorFactory;
14
15
abstract class AbstractAttribute implements AttributeInterface
16
{
17
    /**
18
     * @var AttributeValidatorFactory
19
     */
20
    private $validatorFactory;
21
22
    public function __construct(AttributeValidatorFactory $validatorFactory)
23
    {
24
        $this->validatorFactory = $validatorFactory;
25
    }
26
27
    abstract protected function getOperatorRules();
28
29
    public function getRuleForOperator($operator)
30
    {
31
        $rules = $this->getOperatorRules();
32
33
        if (isset($rules[$operator])) {
34
            return $rules[$operator];
35
        }
36
37
        throw UnsupportedOperatorException::forOperator($operator);
38
    }
39
40
    public function getValidatorFor($operator)
41
    {
42
        $rule = $this->getRuleForOperator($operator);
43
44
        return $this->validatorFactory->createByDefinition($rule);
45
    }
46
}
47