Атрибут server класса Request
Атрибут server класса Request возвращает массив
параметров сервера и окружения, аналогичный суперглобальному
массиву $_SERVER. Он содержит такие данные, как имя
хоста, метод запроса, путь скрипта, заголовки и многое другое.
Доступ к атрибуту осуществляется через свойство server
объекта запроса.
Синтаксис
$request->server->get(key);
$request->server->all();
Пример
Давайте получим значение параметра SERVER_NAME из запроса:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$host = $request->server->get('SERVER_NAME');
return new Response($host);
}
}
?>
Результат выполнения кода:
"localhost"
Пример
Давайте получим метод запроса через атрибут server:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$method = $request->server->get('REQUEST_METHOD');
return new Response($method);
}
}
?>
Результат выполнения кода:
"GET"
Пример
Давайте получим все параметры сервера в виде массива:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$res = $request->server->all();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"SERVER_NAME":"localhost","REQUEST_METHOD":"GET","REQUEST_URI":"/article","SERVER_PORT":"8000"}