Stash   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 7
dl 0
loc 35
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A get() 0 11 2
A set() 0 3 1
1
<?php
2
3
namespace Jaxon\App\Stash;
4
5
use function is_callable;
6
7
class Stash
8
{
9
    /**
10
     * @var array
11
     */
12
    private array $values = [];
13
14
    /**
15
     * @param string $key
16
     * @param mixed $value
17
     *
18
     * @return void
19
     */
20
    public function set(string $key, mixed $value): void
21
    {
22
        $this->values[$key] = $value;
23
    }
24
25
    /**
26
     * @param string $key
27
     * @param mixed $default
28
     *
29
     * @return mixed
30
     */
31
    public function get(string $key, mixed $default = null): mixed
32
    {
33
        $value = $this->values[$key] ?? $default;
34
        if(is_callable($value))
35
        {
36
            $value = $value();
37
            // Save the value returned by the callback in the stash.
38
            $this->values[$key] = $value;
39
        }
40
41
        return $value;
42
    }
43
}
44