Passed
Push — master ( 62cd3f...b14e96 )
by Sergei
02:41
created

ArrayDataSet::getSource()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 0
cts 0
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Validator\DataSet;
6
7
use Yiisoft\Validator\DataWrapperInterface;
8
use Yiisoft\Validator\Helper\DataSetNormalizer;
9
10
use function array_key_exists;
11
12
/**
13 174
 * A data set for storing data as an associative array, where keys are attribute names and values are their
14
 * corresponding values. An example of usage:
15
 *
16
 * ```php
17 102
 * $dataSet = new ArrayDataSet(['name' => 'John', 'age' => 18]);
18
 * ```
19 102
 *
20
 * When using validator, there is no need to wrap your data manually. Array will be automatically wrapped with
21
 * {@see ArrayDataSet} by {@see DataSetNormalizer} during validation.
22 113
 */
23
final class ArrayDataSet implements DataWrapperInterface
24 113
{
25
    public function __construct(
26
        /**
27 98
         * @var array A mapping between attribute names and their values.
28
         */
29 98
        private array $data = [],
30
    ) {
31
    }
32
33
    /**
34
     * Returns an attribute value by its name.
35
     *
36
     * Note that in case of non-existing attribute a default `null` value is returned. If you need to check the presence
37
     * of attribute or return a different default value, use {@see hasAttribute()} instead.
38
     *
39
     * @param string $attribute Attribute name.
40
     *
41
     * @return mixed Attribute value.
42
     */
43
    public function getAttributeValue(string $attribute): mixed
44
    {
45
        return $this->data[$attribute] ?? null;
46
    }
47
48
    /**
49
     * A getter for {@see $data} property. Returns the validated data as a whole in a form of array.
50
     *
51
     * @return array A mapping between attribute names and their values.
52
     */
53
    public function getData(): array
54
    {
55
        return $this->data;
56
    }
57
58
    public function getSource(): array
59
    {
60
        return $this->data;
61
    }
62
63
    /**
64
     * Whether this data set has the attribute with a given name. Note that this means existence only and attributes
65
     * with empty values are treated as present too.
66
     *
67
     * @param string $attribute Attribute name.
68
     *
69
     * @return bool Whether the attribute exists: `true` - exists and `false` - otherwise.
70
     */
71
    public function hasAttribute(string $attribute): bool
72
    {
73
        return array_key_exists($attribute, $this->data);
74
    }
75
}
76