Salt la conținut

HTTP

Request

Leto\Http\Request extinde clasa Request din Symfony. Pe lângă toate metodele Symfony, adaugă câteva specifice Leto:

use Leto\Http\Request;

// Verifică dacă e o cerere AJAX
if (Request::ajax()) { ... }

// Obține URI-ul cererii, cu suport pentru un offset configurabil
$uri = Request::getRequestUri();

// Verifică dacă URL-ul se potrivește cu un regex
if (Request::matchRequest('/^\/api\//')) {
    // e o rută de API
}

Response

Leto\Http\Response extinde clasa Response din Symfony. O comoditate în plus: dacă îi pasezi un array, îl convertește automat în JSON și setează header-ul Content-Type: application/json.

use Leto\Http\Response;

return new Response('Conținut HTML');
return new Response(['status' => 'ok', 'data' => $rezultate]);  // JSON automat

Redirect

Leto\Http\Redirect extinde Response. Prefixează automat URL-urile relative cu base_url(), deci nu trebuie să-ți bați capul cu path-uri absolute.

use Leto\Http\Redirect;

// Redirect permanent (301, implicit)
return new Redirect('/users');

// Redirect temporar
return (new Redirect('/users', 302));

URL

Leto\Http\URL oferă metode statice pentru a lucra cu URL-uri:

use Leto\Http\URL;

// URL-ul complet al paginii curente
$fullUrl = URL::getFull();

// Modifică parametrii din query string
$url = URL::editURI(['page' => 2, 'sort' => 'name']);

// Redirect direct (trimite header Location + exit)
URL::redirect('/login');

User

Leto\Http\User oferă informații despre clientul care face cererea:

use Leto\Http\User;

$userAgent = User::getAgent();         // User-Agent trimis de browser
$ip = User::getIp();                   // Adresa IP a clientului
$inBrowser = User::isInBrowser();      // true dacă e browser web
$inApp = User::isInApp();              // true dacă e aplicația mobilă Workleto
$deviceType = User::getDeviceType();   // 'mobile', 'desktop' sau null