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

AbstractAttribute::getValidatorFor()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 0
cts 5
cp 0
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
crap 2
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