Soubor bootstrap/inc/globalFunctions.php obsahuje globální helper funkce dostupné odkudkoli v PHP kódu i v Twig šablonách. Funkce jsou registrované s if(!function_exists(...)) guardem, takže je lze přepsat v aplikaci.
Routing a navigace
| route(?string $name, ...$params) | Vygeneruje URL z pojmenované route. Bez parametru vrátí aktuální URL. |
| redirect(?string $location, array $variables, int $httpStatusCode) | Přesměruje na danou URL. Proměnné se předají do další stránky přes session. |
| currentUrl(bool $withQueryString = false) | Vrátí aktuální URL bez domény. S true i s query stringem. |
| currentRouteName() | Vrátí název aktuální pojmenované route nebo null. |
// Vygenerování URL
$url = route('profile.show', $userId); // /profile/42
// Redirect s flash message
redirect('/dashboard', ['success' => 'Uloženo']);
// Kontrola aktuální stránky
if(currentRouteName() === 'dashboard') {
// ...
}
Request
| request() | Vrátí instanci Request z DI kontejneru. |
Konfigurace
| config(...$args) | Přečte konfigurační hodnotu. config('production'), config('global', 'possibleLanguages') |
if(config('production')) {
// produkční prostředí
}
$languages = config('global', 'possibleLanguages'); // ['en', 'cs']
Jazyk
| lang(string|array $itemName, mixed $variableValue = null) | Vrátí přeloženou hodnotu z jazykového souboru. Formát: 'Group.Key' |
| currentLanguage() | Vrátí kód aktuálního jazyka (en, cs, ...) |
echo lang('Global.WelcomeMessage'); // "Welcome!"
echo lang('Global.Hello', 'Jan'); // "Hello, Jan!"
echo currentLanguage(); // "cs"
Téma
| currentTheme() | Vrátí aktuální téma (light/dark). Priorita: user preference > cookie > výchozí dark. |
Časová zóna
| getTimezone() | Vrátí DateTimeZone — z profilu uživatele nebo z konfigurace. |
Admin práva
| admin(AdminRightsEnum|string ...$rights) | Zkontroluje admin práva. SuperAdmin má vždy true. Více práv = OR operand. |
if(admin(AdminRightsEnum::DASHBOARD_VIEW)) {
// uživatel má právo na dashboard
}
// Více práv (OR)
if(admin(AdminRightsEnum::USERS_VIEW, AdminRightsEnum::USERS_EDIT)) {
// stačí jedno z práv
}
// Právo jako string (dynamicky)
if(admin('DASHBOARD_VIEW')) {
// ...
}
Enum helpers
| enumValue(mixed $enum) | Vrátí hodnotu PHP backed enumu |
| enumName(mixed $enum) | Vrátí název PHP enumu |
Konstanty
| KB | 1024 |
| MB | 1 048 576 |
| GB | 1 073 741 824 |
| TB | 1 099 511 627 776 |
// Použití konstant
$maxUpload = 10 * MB; // 10 485 760 bytes
Validator::fileSize(5 * MB, 'Soubor je příliš velký');
Přidání vlastní globální funkce
// bootstrap/inc/globalFunctions.php
if(!function_exists('formatPrice')) {
function formatPrice(float $price, string $currency = 'CZK'): string {
return number_format($price, 2, ',', ' ') . ' ' . $currency;
}
}
// Použití kdekoli v PHP
echo formatPrice(1234.5); // "1 234,50 CZK"
Funkce z globalFunctions.php jsou automaticky dostupné i v Twig šablonách, pokud jsou registrované v View::registerCustomFunctions().
Pro nové globální funkce je třeba přidat registraci do View.php v poli $phpFunctions, aby byly dostupné v Twig šablonách.