3 declare(strict_types
=1);
11 final class FlashMessages
13 private const STORAGE_KEY
= 'flashMessages';
16 private array $storage;
18 /** @var array<string, string[]> */
19 private array $previousMessages = [];
21 public function __construct()
23 if (! isset($_SESSION)) {
24 throw new RuntimeException(__('Session not found.'));
27 $this->storage
= &$_SESSION;
29 if (isset($this->storage
[self
::STORAGE_KEY
])) {
30 $this->previousMessages
= $this->storage
[self
::STORAGE_KEY
];
33 $this->storage
[self
::STORAGE_KEY
] = [];
36 public function addMessage(string $key, string $message): void
38 if (! isset($this->storage
[self
::STORAGE_KEY
][$key])) {
39 $this->storage
[self
::STORAGE_KEY
][$key] = [];
42 $this->storage
[self
::STORAGE_KEY
][$key][] = $message;
45 /** @return string[]|null */
46 public function getMessage(string $key): array|
null
48 return $this->previousMessages
[$key] ??
null;
51 /** @return array<string, string[]> */
52 public function getMessages(): array
54 return $this->previousMessages
;