Expression::match()
last analyzed

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 1
c 0
b 0
f 0
ccs 0
cts 0
cp 0
nc 1
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