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