Completed
Push — master ( 4a7265...1250f4 )
by Freek
15:17
created

Flash::getMessage()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 0
dl 0
loc 10
rs 9.9332
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
    protected Session $session;
0 ignored issues
show
Bug introduced by
This code did not parse for me. Apparently, there is an error somewhere around this line:

Syntax error, unexpected T_STRING, expecting T_FUNCTION or T_CONST
Loading history...
14
15
    public function __construct(Session $session)
16
    {
17
        $this->session = $session;
18
    }
19
20
    public function __get(string $name)
21
    {
22
        return $this->getMessage()->$name ?? null;
23
    }
24
25
    public function getMessage(): ?Message
26
    {
27
        $flashedMessageProperties = $this->session->get('laravel_flash_message');
28
29
        if (! $flashedMessageProperties) {
30
            return null;
31
        }
32
33
        return new Message($flashedMessageProperties['message'], $flashedMessageProperties['class']);
34
    }
35
36
    public function flash(Message $message): void
37
    {
38
        if ($message->class && static::hasMacro($message->class)) {
39
            $methodName = $message->class;
40
41
            $this->$methodName($message->message);
42
43
            return;
44
        }
45
46
        $this->flashMessage($message);
47
    }
48
49
    public function flashMessage(Message $message): void
50
    {
51
        $this->session->flash('laravel_flash_message', $message->toArray());
52
    }
53
54
    public static function levels(array $methodClasses): void
55
    {
56
        foreach ($methodClasses as $method => $classes) {
57
            self::macro($method, fn(string $message) => $this->flashMessage(new Message($message, $classes)));
58
        }
59
    }
60
}
61