Middle Bitrix Framework D7 Обязательно

Application и Context

Синглтон Application::getInstance() отвечает за глобальные сервисы приложения (соединение с БД, кеш, планировщик фоновых задач), а Context::getCurrent() инкапсулирует данные текущего запроса (HttpRequest и HttpResponse). Метод $request->get() объединяет массивы GET и POST с приоритетом последнего, а $request->getCookie() автоматически срезает префикс сайта.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    \Bitrix\Main\Application
  • 2
    \Bitrix\Main\Context
  • 3
    Получение текущего пользователя, сайта

Материалы

Официальная документация

Проверь себя

В сервисе нужен 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: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти