You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.2 KiB
56 lines
1.2 KiB
<?php |
|
|
|
declare(strict_types=1); |
|
|
|
namespace PhpMyAdmin; |
|
|
|
use RuntimeException; |
|
|
|
use function __; |
|
|
|
final class FlashMessages |
|
{ |
|
private const STORAGE_KEY = 'flashMessages'; |
|
|
|
/** @var array */ |
|
private $storage; |
|
|
|
/** @var array<string, string[]> */ |
|
private $previousMessages = []; |
|
|
|
public function __construct() |
|
{ |
|
if (! isset($_SESSION)) { |
|
throw new RuntimeException(__('Session not found.')); |
|
} |
|
|
|
$this->storage = &$_SESSION; |
|
|
|
if (isset($this->storage[self::STORAGE_KEY])) { |
|
$this->previousMessages = $this->storage[self::STORAGE_KEY]; |
|
} |
|
|
|
$this->storage[self::STORAGE_KEY] = []; |
|
} |
|
|
|
public function addMessage(string $key, string $message): void |
|
{ |
|
if (! isset($this->storage[self::STORAGE_KEY][$key])) { |
|
$this->storage[self::STORAGE_KEY][$key] = []; |
|
} |
|
|
|
$this->storage[self::STORAGE_KEY][$key][] = $message; |
|
} |
|
|
|
/** @return string[]|null */ |
|
public function getMessage(string $key): ?array |
|
{ |
|
return $this->previousMessages[$key] ?? null; |
|
} |
|
|
|
/** @return array<string, string[]> */ |
|
public function getMessages(): array |
|
{ |
|
return $this->previousMessages; |
|
} |
|
}
|
|
|