Issues (3)

src/Flash.php (2 issues)

1
<?php
2
3
namespace Spatie\Flash;
4
5
use Illuminate\Contracts\Session\Session;
6
use Illuminate\Support\Traits\Macroable;
7
8
/** @mixin \Spatie\Flash\Message */
9
class Flash
10
{
11
    use Macroable;
0 ignored issues
show
The trait Illuminate\Support\Traits\Macroable requires the property $name which is not provided by Spatie\Flash\Flash.
Loading history...
12
13
    protected Session $session;
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(
34
            $flashedMessageProperties['message'],
35
            $flashedMessageProperties['class'],
36
            $flashedMessageProperties['level']
37
        );
38
    }
39
40
    public function flash(Message $message): void
41
    {
42
        if ($message->class && static::hasMacro($message->class)) {
43
            $methodName = $message->class;
44
45
            $this->$methodName($message->message);
46
47
            return;
48
        }
49
50
        $this->flashMessage($message);
51
    }
52
53
    public function flashMessage(Message $message): void
54
    {
55
        $this->session->flash('laravel_flash_message', $message->toArray());
56
    }
57
58
    public static function levels(array $methodClasses): void
59
    {
60
        foreach ($methodClasses as $method => $classes) {
61
            self::macro($method, fn (string $message) => $this->flashMessage(new Message($message, $classes, $method)));
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $this seems to be never defined.
Loading history...
62
        }
63
    }
64
}
65