Url - Reference funkcí
Language management
defineRemoveLangFromUri(string $uri): string
Odebere jazykový prefix z URI a definuje LANG konstantu.
use Petrovo\Url;
$uri = Url\defineRemoveLangFromUri('/cs/kontakt');
// LANG = 'cs'
// vrací: '/kontakt'
Kontroluje:
- Jazyk v URI (
/cs/,/en/) - POST parametr
lang - GET parametr
lang(jen admin)
changeLangUri(string $lang, string $uri): string
Změní jazyk v URI (přeloží slug).
use Petrovo\Url;
$newUri = Url\changeLangUri('en', '/cs/kontakt');
// vrací: '/en/contact' (pokud je slug přeložený)
isLangInUri(string $uri): array
Kontrola, zda URI obsahuje jazykový prefix.
use Petrovo\Url;
$match = Url\isLangInUri('/cs/stranka');
// vrací: ['/cs/', 'cs']
$match = Url\isLangInUri('/stranka');
// vrací: []
isLangInGet(string $lang, bool $admin): bool
Validace, jestli je jazyk v seznamu povolených jazyků.
use Petrovo\Url;
$valid = Url\isLangInGet('cs', false); // true/false
$valid = Url\isLangInGet('xx', false); // false (neexistující jazyk)
langIntoUri(string $lang): string
Konverze jazyka na URI prefix.
use Petrovo\Url;
Url\langIntoUri('cs'); // '/cs/'
Url\langIntoUri('en'); // '/en/'
Url\langIntoUri('cs'); // '/' (když je cs default)
isDefaultLang(string $lang): bool
Kontrola, je-li jazyk výchozí.
use Petrovo\Url;
Url\isDefaultLang('cs'); // true (pokud CONFIG['defaultLang'] == 'cs')
Url\isDefaultLang('en'); // false
Slug translation
changeSlug(string $lang, string $uri): string
Náhrada originálního slugu s jeho překladem pro jazyk.
use Petrovo\Url;
$uri = Url\changeSlug('en', '/cs/kontakt');
// vrací: '/en/contact' (pokud SLUG obsahuje překlad)
Vyžaduje definovanou SLUG konstantu s překlady.
slugFromPath(string $path): string
Extrakce prvního segmentu z cesty.
use Petrovo\Url;
Url\slugFromPath('/kontakt/formulář'); // 'kontakt'
Url\slugFromPath('o-nas'); // 'o-nas'
slugForLang(string $slug, string $lang): string
Získání překladu slugu z API.
use Petrovo\Url;
$translated = Url\slugForLang('contact', 'en');
// Volá Slugs API a vrací překlad
// Výchozí: 'contact' (pokud překlad nenalezen)
URL construction
create(string $href, string $urlApp = ''): string
Vytvoření správně formátované URL. Vždy vrací absolutní cestu začínající /.
use Petrovo\Url;
// Interní odkazy (vždy s /)
Url\create('kontakt'); // '/kontakt' nebo '/cs/kontakt'
Url\create('/cs/o-nas'); // '/cs/o-nas'
Url\create('#sekce'); // '#sekce' (anchor)
// Externí URL
Url\create('https://example.com'); // 'https://example.com'
Url\create('www.example.com'); // 'https://www.example.com'
// Speciální protokoly
Url\create('mailto:info@example.com'); // 'mailto:info@example.com'
Url\create('tel:+420123456789'); // 'tel:+420123456789'
Url\create('javascript:void(0)'); // 'javascript:void(0)'
Důležité: Funkce automaticky doplňuje URL_APP nebo URL_APP_ADMIN prefix, ale interní relativní cesty se VŽDY vrací s počátečním /.
V HTML šablonách tedy vždy výstup začíná /:
<a href="{T url href='kontakt'}">Kontakt</a>
<!-- Výstup: -->
<a href="/cs/kontakt">Kontakt</a>
Žádné složité výpočty podadresáře - prostě / vždy.
addLeadingSlash(string $string): string
Přidání počáteční lomítka.
use Petrovo\Url;
Url\addLeadingSlash('kontakt'); // '/kontakt'
Url\addLeadingSlash('/kontakt'); // '/kontakt'
Url\addLeadingSlash(' slozka'); // '/slozka'
Redirection & HTTP
redirect(string $where, int $code = 301): void
Přesměrování a ukončení skriptu.
use Petrovo\Url;
Url\redirect('/nova-adresa'); // 301 Moved Permanently (default)
Url\redirect('/nova-adresa', 302); // 302 Found (temporary)
Url\redirect('/nova-adresa', 307); // 307 Temporary Redirect
Url\redirect('/nova-adresa', 308); // 308 Permanent Redirect
// Bez parametru = redirect na /
Url\redirect(''); // -> '/'
Pozor: Tato funkce má atribut #[NoReturn] – skript se ukončí!
urlExists(string $url): bool
Ověření existence URL (HEAD request).
use Petrovo\Url;
if (Url\urlExists('https://example.com')) {
echo "URL existuje";
} else {
echo "URL neexistuje";
}
Kontroluje HTTP status 2xx (200-299).
Constants & Errors
defineConstant(string $constant, mixed $value): void
Definice konstanty (pokud neexistuje).
use Petrovo\Url;
Url\defineConstant('LANG', 'cs');
Url\defineConstant('PAGE', 'home');
// Bezpečné – nenahradí existující konstantu
Url\defineConstant('LANG', 'en'); // Nic se nestane
show404(): string
Vykreslení 404 chybové stránky.
use Petrovo\Url;
$html = Url\show404();
echo $html;
// Nebo přímo:
die(Url\show404());
Nastaví PAGE = '404' a vykreslí app/templates/404.tpl.
Přehled – co jednotlivé funkce dělají
| Funkce | Účel |
|---|---|
defineRemoveLangFromUri() |
Extrahuj jazyk z URI, definuj LANG |
changeLangUri() |
Změní jazyk v URI s překladem |
isLangInUri() |
Kontrola jazyka v URI |
isLangInGet() |
Validace jazyka |
langIntoUri() |
Konverze jazyka → URI prefix |
isDefaultLang() |
Je to default jazyk? |
changeSlug() |
Náhrada slugu s překladem |
slugFromPath() |
Extrakce prvního segmentu |
slugForLang() |
Získej překlad slugu z API |
create() |
Vytvoř správnou URL |
addLeadingSlash() |
Přidej / na začátek |
redirect() |
Přesměruj + exit |
urlExists() |
Existuje URL? |
defineConstant() |
Definuje konstantu |
show404() |
Vykresl 404 stránku |