Expression   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 92.31%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 1
dl 0
loc 35
rs 10
c 0
b 0
f 0
ccs 12
cts 13
cp 0.9231

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
match() 0 1 ?
A getKey() 0 4 1
A getReference() 0 4 1
A getValue() 0 10 2
1
<?php
2
3
namespace Mattbit\Flat\Query\Expression\Leaf;
4
5
use DateTime;
6
use Mattbit\Flat\Model\Date;
7
use Mattbit\Flat\Model\DocumentInterface;
8
use Mattbit\Flat\Query\Expression\ExpressionInterface;
9
10
abstract class Expression implements ExpressionInterface
11
{
12
    protected $key;
13
14
    protected $reference;
15
16 12
    public function __construct($key, $reference)
17
    {
18 12
        $this->key = $key;
19 12
        $this->reference = $reference;
20 12
    }
21
22
    abstract public function match(DocumentInterface $document);
23
24 4
    public function getKey()
25
    {
26 4
        return $this->key;
27
    }
28
29 4
    public function getReference()
30
    {
31 4
        return $this->reference;
32
    }
33
34 6
    public function getValue(DocumentInterface $document)
35
    {
36 6
        $value = $document->get($this->key);
37
38 6
        if ($this->reference instanceof DateTime) {
39
            return new DateTime($value);
40
        }
41
42 6
        return $value;
43
    }
44
}
45