Popis Message třídy
Tento dokument popisuje strukturu a funkcionalitu třídy Message v core/Message/Message.php.
Třída Message
Statická třída pro správu flash zpráv (flash messages) v aplikaci. Umožňuje ukládat zprávy do session a vyrenderovat je na následující HTTP requestu.
Principy
- Statická API – všechny metody jsou statické, Message se používá globálně bez instanciace
- Session-based – zprávy se ukládají do session, takže přežijí HTTP přesměrování
- Dva kanály – info/success zprávy a error zprávy jsou uloženy odděleně
- HTML formatted – zprávy se automaticky obalují CSS classy pro styling
- Auto-clearing – zprávy se automaticky smažou po jejich vypsání
Session klíče
Zprávy se ukládají v dvou různých session klíčích:
| Klíč | Obsah | CSS třída |
|---|---|---|
$_SESSION['message'] |
Info a success zprávy | message |
$_SESSION['error_message'] |
Chybové zprávy | error_message |
Klíčové metody
Přidávání zpráv
| Metoda | Popis |
|---|---|
info(string\|null $message): void |
Přidej info zprávu (s CSS třídou info_message) |
success(string\|null $message): void |
Přidej success zprávu |
error(string\|null $message): void |
Přidej chybovou zprávu |
Vypsání zpráv
| Metoda | Popis |
|---|---|
print(bool $echo = true): string |
Vypiš a smaž všechny zprávy |
Metody
Message::info(string|null $message): void
Přidá info zprávu do session.
Chování:
- Pokud je zpráva prázdná (
null, prázdný string,0,false), není přidána - Zpráva se obalí v
<div class="message info_message">...</div> - Připojí se na konec front
$_SESSION['message']
Příklad:
Message::info('Toto je informace');
// Přidá: <div class="message info_message">Toto je informace</div>
Message::success(string|null $message): void
Přidá success zprávu do session.
Chování:
- Pokud je zpráva prázdná, není přidána
- Zpráva se obalí v
<div class="message">...</div> - Připojí se na konec fronty
$_SESSION['message']
Příklad:
Message::success('Operace byla úspěšná!');
// Přidá: <div class="message">Operace byla úspěšná!</div>
Message::error(string|null $message): void
Přidá chybovou zprávu do session.
Chování:
- Pokud je zpráva prázdná, není přidána
- Zpráva se obalí v
<div class="error_message">...</div> - Připojí se na konec fronty
$_SESSION['error_message']
Příklad:
Message::error('Došlo k chybě!');
// Přidá: <div class="error_message">Došlo k chybě!</div>
Message::print(bool $echo = true): string
Vypiš a smaž všechny zprávy ze session.
Chování:
- Načte
$_SESSION['error_message']a$_SESSION['message'] - Zkombinuje obě do jednoho HTML řetězce (error zprávy jako první)
- Smaže obě session klíče
- Vrátí výsledný HTML
- Pokud je
$echo = true, také vypíše HTML na výstup
Parametry:
$echo(default:true) – Měl by se output vypsat na výstup?
Návratová hodnota:
- String s HTML formátem zpráv
Příklad:
// Vypíše a smaže zprávy
Message::print();
// Jen načte, nevypíše
$messages = Message::print(false);
echo $messages;
HTML struktura
Info zpráva
<div class="message info_message">Toto je info zpráva</div>
Success zpráva
<div class="message">Operace byla úspěšná</div>
Error zpráva
<div class="error_message">Došlo k chybě</div>
Výstup Message::print()
<div class="error_message">Chyba 1</div>
<div class="error_message">Chyba 2</div>
<div class="message info_message">Info zpráva</div>
<div class="message">Success zpráva</div>
Chování s prázdnými zprávami
Když voláš Message::info() s prázdnou, null nebo false hodnotou:
Message::info(null); // Nepřidá se
Message::info(''); // Nepřidá se
Message::info(0); // Nepřidá se
Message::info(false); // Nepřidá se
Message::info('Text'); // Přidá se ✓
To je bezpečnostní prvek – zamezuje přidávání nežádoucích prázdných zpráv.
Session automatika
Inicializace session klíčů
Klíče se inicializují (null coalesce) jen když je potřeba přidat zprávu:
$_SESSION['message'] ??= ''; // Jen pokud neexistuje
To znamená, že pokud neexistují zprávy, session klíče nejsou ani vytvořeny.
Mazání session klíčů
Pouze metoda print() maže session klíče:
unset($_SESSION['error_message'], $_SESSION['message']);
To zabraňuje duplicitě zpráv na následující stránce.
Shrnutí (pro vývojáře)
- Používej
Message::pro veškerou práci se flash zprávami - Info/success zprávy se ukládají v
$_SESSION['message'] - Error zprávy se ukládají v
$_SESSION['error_message'] - Vždy voláj
Message::print()v šabloně pro vypsání zpráv - Zprávy jsou automaticky smazány po vypsání
- Zprávy se automaticky obalují HTML divem s CSS třídou
print()lze volat sfalsepro jen-načtení bez vypsání- HTML obsah zpráv NENÍ escapován – dbej na XSS bezpečnost (sanitizuj vstup!)