30  /  330

Приложения и контекст

Просмотров: 3462 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 16.09.2015

Приложение - это объект, отвечающий за инициализацию ядра.

Приложение является базовой точкой входа (маршрутизатором) для обращения к глобальным сущностям ядра: соединение с источниками данных, управляемый кеш и т.п. Также приложение содержит глобальные данные, которые относятся к самому сайту и не зависят от конкретного хита. То есть, приложение является неизменяемой частью, не зависящей от конкретного хита.

Любой конкретный класс приложения является наследником абстрактного класса Bitrix\Main\Application. Поддерживаются два конкретных класса приложения: Bitrix\Main\HttpApplication и Bitrix\Main\CliApplication, которые являются наследниками класса 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->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

36
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии