ItemWrapper::value()
last analyzed

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
nc 1
dl 0
loc 1
c 0
b 0
f 0
1
<?php
2
3
namespace LaravelLangBundler\BundleItems;
4
5
abstract class ItemWrapper extends BundleItem
6
{
7
    /**
8
     * Target: 'key', 'value' or 'both'.
9
     *
10
     * @var string
11
     */
12
    protected $target;
13
14
    /**
15
     * Any parameters needed for the effect.
16
     *
17
     * @var array
18
     */
19
    protected $wrapperParameters = [];
20
21
    /**
22
     * Construct.
23
     *
24
     * @param string $id
25
     * @param string $target
26
     * @param array  $wrapperParameters
27
     */
28
    public function __construct($id, $target = null, array $wrapperParameters = [])
29
    {
30
        parent::__construct($id);
31
32
        $this->target = $target;
33
34
        $this->wrapperParameters = $wrapperParameters;
35
    }
36
37
    /**
38
     * Get the set target.
39
     *
40
     * @return string
41
     */
42
    public function getAffect()
43
    {
44
        return $this->target;
45
    }
46
47
    /**
48
     * If target is key, get key from child. Otherwise, get from parent.
49
     *
50
     * @return string
51
     */
52
    public function getKey()
53
    {
54
        if ($this->target === 'key' || $this->target === 'both') {
55
            return $this->key($this->key);
56
        }
57
58
        return parent::getKey();
59
    }
60
61
    /**
62
     * If target is value, get value from child. Otherwise, get from parent.
63
     *
64
     * @return mixed
65
     */
66
    public function getValue()
67
    {
68
        if ($this->target === 'value' || $this->target === 'both') {
69
            return $this->value($this->value);
70
        }
71
72
        return parent::getValue();
73
    }
74
75
    /**
76
     * Alter key and return.
77
     *
78
     * @param string $key
79
     *
80
     * @return string
81
     */
82
    abstract public function key($key);
83
84
    /**
85
     * Alter value and return.
86
     *
87
     * @param mixed $value
88
     *
89
     * @return mixed
90
     */
91
    abstract public function value($value);
92
}
93