Completed
Push — master ( 7657d3...de8de3 )
by Freek
13:38
created

Flash::levels()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 1
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
1
<?php
2
3
namespace Spatie\Flash;
4
5
use Illuminate\Support\Traits\Macroable;
6
use Illuminate\Contracts\Session\Session;
7
8
/** @mixin \Spatie\Flash\Message */
9
class Flash
10
{
11
    use Macroable;
12
13
    /** @var \Illuminate\Contracts\Session\Session */
14
    protected $session;
15
16
    public function __construct(Session $session)
17
    {
18
        $this->session = $session;
19
    }
20
21
    public function __get(string $name)
22
    {
23
        return $this->getMessage()->$name ?? null;
24
    }
25
26
    public function getMessage(): ?Message
27
    {
28
        $flashedMessageProperties = $this->session->get('laravel_flash_message');
29
30
        if (!$flashedMessageProperties) {
31
            return null;
32
        }
33
34
        return new Message($flashedMessageProperties['message'], $flashedMessageProperties['class']);
35
    }
36
37
    public function flash(Message $message): void
38
    {
39
        $this->session->flash('laravel_flash_message', $message->toArray());
40
    }
41
42
    public static function levels(array $methodClasses): void
43
    {
44
        foreach($methodClasses as $method => $classes)
45
        {
46
            self::macro($method, function (string $message) use ($classes) {
47
                return $this->flash(new Message($message, $classes));
48
            });
49
        }
50
    }
51
}
52