Application и Context
Синглтон Application::getInstance() отвечает за глобальные сервисы приложения (соединение с БД, кеш, планировщик фоновых задач), а Context::getCurrent() инкапсулирует данные текущего запроса (HttpRequest и HttpResponse). Метод $request->get() объединяет массивы GET и POST с приоритетом последнего, а $request->getCookie() автоматически срезает префикс сайта.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
\Bitrix\Main\Application
-
2
\Bitrix\Main\Context
-
3
Получение текущего пользователя, сайта
Материалы
Официальная документация
-
Request и Response Новая дока
Материалы BXMax
Проверь себя
В сервисе нужен ID текущего пользователя, а у Context нет такого метода. Где брать?
В Engine CurrentUser: CurrentUser::get()->getId(). Context знает про хит — сайт, язык, культуру, запрос и ответ, но не про пользователя. В старом коде это $USER->GetID(), и оба способа читают одну авторизацию.
Форма отправлена методом POST на адрес с ?id=5, в теле формы тоже id=7. Что вернёт $request->get('id') и почему?
7. HttpRequest в конструкторе склеивает GET и POST через array_merge, и POST перекрывает GET. Если источник важен — getQuery('id') и getPost('id') отдельно.
Заказчик жалуется, что $request->getCookie('SALE_UID') пустой, хотя в браузере cookie есть. Где искать?
В имени. getCookie() отдаёт только cookie с префиксом сайта (по умолчанию BITRIX_SM_) и уже без него: BITRIX_SM_SALE_UID превращается в SALE_UID. Cookie без префикса, например от внешнего скрипта, доступны через getCookieRaw().
Чем Application::getInstance()->getContext() отличается от Context::getCurrent()?
Ничем по результату: getCurrent() — короткая запись, которая возвращает контекст приложения или null, если Application ещё не создан. Application живёт весь хит и не меняется, Context описывает конкретный запрос.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить