HTTP
Leto oferă wrappere subțiri peste componentele HTTP din Symfony pentru lucrul cu request-ul curent, construirea răspunsurilor și redirect-uri. Această pagină acoperă Request, Response, Redirect, URL și User.
Request
Leto\Http\Request extinde clasa Request din Symfony. Pe lângă toate metodele Symfony, adaugă câteva specifice Leto:
use Leto\Http\Request;
// Obține instanța request-ului curent
$req = request();
// Verifică dacă e o cerere AJAX
if ($req->ajax()) { ... }
// Obține URI-ul cererii (poți seta un offset cu $req->setRequestOffset(int))
$uri = $req->getRequestUri();
// Verifică dacă URL-ul se potrivește cu un regex
if ($req->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.
Setup unic: Redirect folosește funcția globală base_url(), pe care o oferi tu la nivel de aplicație (framework-ul nu impune o implementare, ca să poți controla schema și host-ul). Adaug-o o dată în helper-ele aplicației:
function base_url(string $path = ''): string
{
return request()->getSchemeAndHttpHost() . $path;
}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();
// Construiește un query string din parametrii dați
$queryString = URL::editURI(['page' => 2, 'sort' => 'name']); // "page=2&sort=name"
// Redirect direct (trimite header Location + exit)
URL::redirect('/login');Setup unic: URL::redirect() se sprijină pe metoda statică URL::getBase(), pe care o furnizezi la nivel de aplicație (prin extinderea clasei URL), la fel ca base_url() de mai sus:
public static function getBase(): string
{
return request()->getSchemeAndHttpHost();
}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(); // 'web', 'ios', 'android' sau 'windows'