Skip to content

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 s false pro jen-načtení bez vypsání
  • HTML obsah zpráv NENÍ escapován – dbej na XSS bezpečnost (sanitizuj vstup!)