Дата последнего изменения: 26.05.2021
Приложение является базовой точкой входа (маршрутизатором) для обращения к глобальным сущностям ядра: соединение с источниками данных, управляемый кеш и т.п. Также приложение содержит глобальные данные, которые относятся к самому сайту и не зависят от конкретного хита. То есть, приложение является неизменяемой частью, не зависящей от конкретного хита.
Любой конкретный класс приложения является наследником абстрактного класса Bitrix\Main\Application.
Конкретный класс Bitrix\Main\HttpApplication отвечает за обычный http-хит на сайте.
Приложение поддерживает шаблон Singleton (Одиночка). Т.е. в рамках хита существует только один экземпляр конкретного типа приложения. Его можно получить инструкцией
$application = Application::getInstance();
Любой конкретный класс контекста является наследником абстрактного класса Bitrix\Main\Context. Осуществляется поддержка двух конкретных классов контекста: Bitrix\Main\HttpContext и Bitrix\Main\CliContext. Конкретный класс Bitrix\Main\HttpContext отвечает за обычный http-хит на сайте.
Чтобы получить контекст выполнения текущего хита, можно воспользоваться кодом
$context = Application::getInstance()->getContext();
Если было инициализировано приложение типа Bitrix\Main\HttpApplication, то этот вызов вернет экземпляр контекста типа Bitrix\Main\HttpContext.
Контекст содержит в себе запрос текущего хита. Для того, чтобы получить запрос, можно воспользоваться кодом:
$context = Application::getInstance()->getContext(); $request = $context->getRequest();
Запрос представляет собой экземпляр класса, являющегося наследником класса Bitrix\Main\Request. В случае обычного http-запроса запрос будет являться экземпляром класса Bitrix\Main\HttpRequest, расширяющего Bitrix\Main\Request. Этот класс является по сути словарем, предоставляющим доступ к парам "ключ-значение" входящих параметров.
Для того чтобы обратиться к входящему параметру, переданному методами GET или POST, можно использовать код:
$value = $request->get("some_name"); $value = $request["some_name"];
$value = $request["some_name"];
возвращает строку, которая прошла уже фильтры модуля безопасности. Однако это не говорит о ее безопасности, всё зависит от того, что с ней необходимо делать дальше.Другие полезные методы запроса:
$value = $request->getQuery("some_name"); // получение GET-параметра $value = $request->getPost("some_name"); // получение POST-параметра $value = $request->getFile("some_name"); // получение загруженного файла $value = $request->getCookie("some_name"); // получение значения кука $uri = $request->getRequestUri(); // получение запрошенного адреса $method = $request->getRequestMethod(); // получение метода запроса $flag = $request->isPost(); // true - POST-запрос, иначе false