Skip to content

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:

  1. Jazyk v URI (/cs/, /en/)
  2. POST parametr lang
  3. 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