AbstractRow::get()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 4
cts 4
cp 1
rs 9.4285
c 0
b 0
f 0
nc 4
cc 3
eloc 3
nop 2
crap 3
1
<?php
2
3
namespace Nayjest\Querying\Row;
4
5
abstract class AbstractRow implements RowInterface
6
{
7
    protected $dynamicFields;
8
9
    abstract protected function hasInternal($fieldName);
10
11
    abstract protected function getInternal($fieldName);
12
13 12
    public function __construct(DynamicFieldsRegistry $dynamicFields)
14
    {
15 12
        $this->dynamicFields = $dynamicFields;
16 12
    }
17
18 5
    public function get($fieldName, $default = null)
19
    {
20 5
        return $this->hasInternal($fieldName) ? $this->getInternal($fieldName) : (
21 3
            $this->dynamicFields->has($fieldName) ? $this->dynamicFields->get($fieldName, $this) : $default
22 5
        );
23
    }
24
25 2
    public function has($fieldName)
26
    {
27 2
        return $this->hasInternal($fieldName) || $this->dynamicFields->has($fieldName);
28
    }
29
30 3
    public function dynamicFieldsRegistry()
31
    {
32 3
        return $this->dynamicFields;
33
    }
34
35 2
    public function toArray()
36
    {
37 2
        return array_merge((array)$this->getSrc(), $this->dynamicFieldsRegistry()->getAll($this));
38
    }
39
40 2
    public function toObject()
41
    {
42 2
        $src = $this->getSrc();
43 2
        if (!is_object($src)) {
44 1
            $src = (object)$src;
45 1
        }
46 2
        $dynamicFields = $this->dynamicFieldsRegistry()->getAll($this);
47 2
        foreach($dynamicFields as $key => $value) {
48 2
            $src->{$key} = $value;
49 2
        }
50 2
        return $src;
51
    }
52
53
    public function extract()
54
    {
55
        return is_array($this->getSrc()) ? $this->toArray() : $this->toObject();
56
    }
57
}
58