РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
199 of 1361 menu

Метод getRealMethod

Метод getRealMethod класса Request возвращает реальный HTTP-метод запроса. В отличие от метода getMethod, он учитывает переопределение метода через специальный заголовок X-HTTP-Method-Override. Это полезно, когда клиент не может отправить, например, PUT или DELETE напрямую и вынужден использовать POST с заголовком-переопределением. Метод не принимает параметров и возвращает строку с названием метода в верхнем регистре.

Синтаксис

$res = $request->getRealMethod();

Пример

Давайте создадим объект Request с методом GET и получим реальный метод:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; class RequestController extends AbstractController { public function index(): Response { $request = Request::create('/'); $res = $request->getRealMethod(); return new Response($res); } } ?>

Результат выполнения кода:

"GET"

Пример

Давайте создадим POST-запрос с заголовком X-HTTP-Method-Override и посмотрим, что вернёт метод:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; class RequestController extends AbstractController { public function index(): Response { $request = Request::create('/', 'POST'); $request->headers->set('X-HTTP-Method-Override', 'PUT'); $res = $request->getRealMethod(); return new Response($res); } } ?>

Результат выполнения кода:

"PUT"

Как видно из примера, метод getRealMethod вернул 'PUT', хотя сам запрос был отправлен методом POST. Для сравнения, метод getMethod в этой же ситуации вернул бы 'POST'.

Пример

Давайте используем метод внутри контроллера и вернём ответ в зависимости от реального метода:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; class RequestController extends AbstractController { public function index(Request $request): Response { $method = $request->getRealMethod(); if ($method === 'DELETE') { return new Response('record deleted'); } return new Response('method: ' . $method); } } ?>

Результат выполнения кода для DELETE-запроса:

"record deleted"

Смотрите также

  • метод getMethod,
    который возвращает HTTP-метод без учёта переопределения
  • метод isMethod,
    который проверяет соответствие метода запроса заданному
  • метод isMethodIdempotent,
    который проверяет идемпотентность метода
  • класс Request,
    который представляет HTTP-запрос
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить