2.5 LoaderRequest.php — Обработка запросаlink

Назначениеlink

Класс LoaderRequest — это универсальный адаптер запроса, который обеспечивает:

  • безопасный доступ к параметрам запроса;
  • работу с разными окружениями (в т.ч. Bitrix и обычный PHP);
  • единый интерфейс для получения GET, POST, заголовков и т.д.

Используется в Loader.php для получения всех параметров, включая a, b, clear_cache, relations, url, checkFake.

Основная структураlink

 class LoaderRequest
 {
    protected string $method;
    protected string $uri;
    protected array $get;
    protected array $post;
    protected array $server;
    protected array $cookies;
 }

Все суперглобальные переменные копируются и сохраняются в объект, чтобы избежать прямого обращения к $_GET, $_POST и т.д.

Конструкторlink

 public function __construct(array $get = [], array $post = [], array $server = [], array $cookies = [])

Позволяет задать входные данные вручную (например, из симуляции запроса), либо по умолчанию использует суперглобалы.

Ключевые методыlink

getQuery(string $key = null): mixedlink

Возвращает значение из GET-параметров. Если ключ не передан — возвращает весь массив $_GET.

getPost(string $key = null): mixedlink

Аналогично — для POST-параметров.

getCookies(): arraylink

Возвращает массив cookie.

getServerParams(): arraylink

Возвращает $_SERVER.

getMethod(): stringlink

HTTP-метод запроса (GET, POST, и т.д.).

getUri(): stringlink

URI без query string. Пример: /page/item.

getRequestUri(): stringlink

Полный URI, включая query string. Пример: /page/item?a=modal.

getHeader($name): string|nulllink

Позволяет получить значение заголовка по имени. Использует getallheaders() при наличии.

getRequestedPageDirectory(): stringlink

Возвращает директорию страницы без query-параметров и без последнего сегмента.

Примерlink

  • URI: /catalog/item/123
  • Вернёт: /catalog/item

Используется при формировании pageHash.

Особенностиlink

  • Универсален — работает как в Bitrix (через Application::getContext()), так и в обычном PHP;
  • Не зависит от глобальных переменных;
  • Упрощает тестирование и расширение загрузчика;
  • Все параметры можно получить централизованно через объект Loader::$request.