Названия классов в примерах сокращены, поэтому используем use:
use Bitrix\Main\Application,
Bitrix\Main\Context,
Bitrix\Main\Request,
Bitrix\Main\Server;
Bitrix\Main\Application
Из документации:
Приложение является базовой точкой входа (маршрутизатором) для обращения к глобальным сущностям ядра: соединение с источниками данных, управляемый кеш и т.п. Также приложение содержит глобальные данные, которые относятся к самому сайту и не зависят от конкретного хита. То есть, приложение является неизменяемой частью, не зависящей от конкретного хита.
Объект приложения, которые можно получить так:
$application = Application::getInstance();
Из класса приложения можно получить, например, соединение с БД и document_root:
$docRoot = Application::getDocumentRoot();
$connection = Application::getConnection();
Bitrix\Main\Context
При инициализации приложения создаётся контекст:
Контекст - это объект, отвечающий за конкретный хит. Он содержит запрос текущего хита, ответ ему, а также серверные параметры текущего хита. То есть это изменяемая часть, зависящая от текущего хита.
Чтобы получить контекст текущего хита нужно выполнить
$context = Application::getInstance()->getContext();
// Или более краткая форма:
$context = Context::getCurrent();
Контекст содержит много полезной информации о запросе, сервере, сайте, языке.
$request = $context->getRequest(); // объект Request
$server = $context->getServer(); // объект Server
$siteId = $context->getSite(); // ID текущего сайта ("s1")
$langId = $context->getLanguage(); // ID текущего языка ("ru")
Bitrix\Main\Request
Объект запроса позволяет получить данные о текущем запросе: метод и протокол, запрошенный URL, переданные параметры и т.п.
$request = $context->getRequest();
// Или более краткая форма:
$request = Context::getCurrent()->getRequest();
Параметры запроса:
$value = $request->get("param"); // получение параметра GET или POST
$value = $request["param"]; // получение параметра GET или POST
$value = $request->getQuery("param"); // получение GET-параметра
$values = $request->getQueryList(); // получение списка GET-параметров
$value = $request->getPost("param"); // получение POST-параметра
$values = $request->getPostList(); // получение списка POST-параметров
$value = $request->getFile("param"); // получение загруженного файла
$values = $request->getFileList(); // получение списка загруженных файлов
$value = $request->getCookie("param"); // получение значения кука
$values = $request->getCookieList(); // получение списка кукисов
Метод и протокол запроса:
$method = $request->getRequestMethod(); // получение метода запроса
$flag = $request->isGet(); // true - GET-запрос, иначе false
$flag = $request->isPost(); // true - POST-запрос, иначе false
$flag = $request->isAjaxRequest(); // true - AJAX-запрос, иначе false
$flag = $request->isHttps(); // true - HTTPS-запрос, иначе false
Данные о запрошенной странице:
$flag = $request->isAdminSection(); // true - находимся в админке, иначе false
$requestUri = $request->getRequestUri(); // Запрошенный адрес (напр. "/catalog/category/?param=value")
$requestPage = $request->getRequestedPage(); // Запрошенная страница (напр. "/catalog/category/index.php")
$rDir = $request->getRequestedPageDirectory();// Директория запрошенной страницы (напр. "/catalog/category")
Bitrix\Main\Server
Объект сервера позволяет получить информацию из суперглобального массива $_SERVER, а также некоторую другую информацию.
$server = $context->getServer();
// Или более краткая форма:
$server = Context::getCurrent()->getServer();
$server->getDocumentRoot(); // DOCUMENT_ROOT
$server->getPersonalRoot(); // BX_PERSONAL_ROOT ("/bitrix")
$server->getHttpHost(); // HTTP_HOST
$server->getServerName(); // SERVER_NAME
$server->getServerAddr(); // SERVER_ADDR
$server->getServerPort(); // SERVER_PORT
$server->getRequestUri(); // REQUEST_URI
$server->getRequestMethod();// REQUEST_METHOD
$server->getPhpSelf(); // PHP_SELF
$server->getScriptName(); // SCRIPT_NAME
$server->get('HTTP_ACCEPT');// Любое значение из $_SERVER
Читайте также: