Jet\Http_Headers

Jak název třídy napovídá, tak slouží k práci s HTTP hlavičkami, přesněji řečeno pro odesílání hlaviček odpovědi a velice často k různým přesměrováním a podobně.

Metoda Význam
public static response(
int $code,
array $headers = [],
string $custom_response_message=''
): void
Sestaví a odešle HTTP odpověď. Parametry:
  • $code HTTP návratový kód (200, 404, nebo libovolný jiný)
  • $headers Volitelné HTTP hlavičky. Je možné předat asociované pole: Http_Headers::response(Http_Headers::CODE_200_OK, [
        
    'Content-Type'=>'text/plain'
        
    'Header-2'=>'value-2'
    ]);
    A stejně tak je možné použít prosté pole: Http_Headers::response(Http_Headers::CODE_200_OK, [
        
    'Content-Type: text/plain'
        
    'Header-2: value-2'
    ]);
  • $custom_response_message Jet k příslušnému HTTP kódům do odpovědi automaticky doplňuje textovou interpretaci kódu.

    Tedy například:
    HTTP/1.1 200 OK
    HTTP/1.1 404 Not Found

    Tyto textové hodnoty můžete globálně konfigurovat přes Jet\SysConf_Jet_Http::setResponseMessages
    Ovšem pokud chcete poslat v určité situaci (např. REST API) svou hodnotu, tak máte možnost ji definovat pomocí tohoto parametru.
public static redirect(
int $http_code,
string $target_URL,
array $headers = [],
bool $application_end = true
): void
Provede přesměrování na danou URL za pomoci volitelného HTTP návratového kódu. Tedy například: Http_Headers::redirect(
    
Http_Headers::CODE_301_MOVED_PERMANENTLY
    
'https://some.domain' 
);

Pomocí parametru headers lze definovat další volitelné hlavičky (princip stejný jako u metody response).

Parametr $application_end pak určuje, zda má po přesměrování rovnou dojít k ukončení běhu aplikace.
public static movedPermanently(
string $target_URL,
array $headers = [],
bool $application_end = true
): void
Identická metoda jako redirect s tím rozdílem, že HTTP kód 301 je použit automaticky.
public static movedTemporary(
string $target_URL,
array $headers = [],
bool $application_end = true
): void
Identická metoda jako redirect s tím rozdílem, že HTTP kód 302 je použit automaticky.
public static reload(
array $set_GET_params = [],
array $unset_GET_params = [],
?string $set_anchor = null,
bool $application_end = true
): void
Pravděpodobně nejčastěji používaná metoda této třídy. Používá se například po odeslání formuláře (nejčastěji metodou POST) nebo obecně provedení nějaké akce.

Tedy například uživatel poslal článek pomocí formuláře (metoda POST), článek je přidán a by potřebujete uživatele přesměrovat na detail (editaci) tohoto nově přidaného článku.

V takové situaci budete potřebovat přesměrování (pravděpodobně) na stejnou URL s tím rozdílem, že například do GET parametrů přidáte novou hodnotu, nebo naopak z parametrů stávajících nějakou hodnotu odeberete.

Ukažme si praktické příklady.

Dejme tomu, že GET parametr delete má provést akci smazání článku. URL pak může být:
https://some.domain/armin/articles/?delete=123

Váš kontroler vše pořeší, článek smaže a potřebuje dostat uživatel na seznam článků. Tedy na URL https://some.domain/armin/articles/. Udělá to takto: Http_Headers::reload(unset_GET_params: ['delete']);
A druhý příklad. Byl přidán nový článek a uživatele chcete poslat rovnou na jeho editaci, tedy na URL https://some.domain/armin/articles/?id=123
To uděláte takto: Http_Headers::reload(set_GET_params: ['id'=>$id]);
public static sendDownloadFileHeaders(
string $file_name,
string $file_mime,
int $file_size,
bool $force_download = false
): void
Pokud potřebujete uživateli poslat nějaký soubor (ke stažení a podobně), tak potřebujete správně sestavit HTTP hlavičky. Tato metoda to udělá za vás.

Metodu můžete použít samostatně, nebo můžete vše nechat na metodě Jet\IO_File::send(), která stačí "předhodit" soubor a o vše už se postará.
Předchozí kapitola
Jet\Http_Request
Další kapitola
Užiteční pomocníci pro práci s různými daty - Jet\Data