Bitrix\Main\Application - uniqcle/Bitrix GitHub Wiki
use Bitrix\Main\Application,
Bitrix\Main\Context,
Bitrix\Main\Request,
Bitrix\Main\Server;
Bitrix\Main\Application
Приложение является базовой точкой входа (маршрутизатором) для обращения к глобальным сущностям ядра: соединение с источниками данных, управляемый кеш и т.п. Также приложение содержит глобальные данные, которые относятся к самому сайту и не зависят от конкретного хита. То есть, приложение является неизменяемой частью, не зависящей от конкретного хита.
$application = \Bitrix\Main\Application::getInstance(); //Объект приложения
$docRoot = \Bitrix\Main\Application::getDocumentRoot(); //Получить document_root
$connection = \Bitrix\Main\Application::getConnection(); //соединение с БД
Bitrix\Main\Context
При инициализации приложения создаётся контекст:
Контекст - это объект, отвечающий за конкретный хит. Он содержит запрос текущего хита, ответ ему, а также серверные параметры текущего хита. То есть это изменяемая часть, зависящая от текущего хита.
Чтобы получить контекст текущего хита нужно выполнить
$context = Application::getInstance()->getContext();
// Или более краткая форма:
$context = Context::getCurrent();
Контекст содержит много полезной информации о запросе, сервере, сайте, языке.
$request = $context->getRequest(); // объект Request
$siteId = $context->getSite(); // ID текущего сайта ("s1")
$langId = $context->getLanguage(); // ID текущего языка ("ru")
$server = $context->getServer(); // объект Server
$server->getDocumentRoot(); //Путь до корня сайта
$server->getServerName(); //SERVER_NAME
$server->get('HTTP_X_REAL_IP'); //$_SERVER['HTTP_X_REAL_IP']
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") Аналог $APPLICATION->GetCurPageParam()
$requestPage = $request->getRequestedPage(); // Запрошенная страница (напр. "/catalog/category/index.php") Аналог $APPLICATION->GetCurPage()
$rDir = $request->getRequestedPageDirectory();// Директория запрошенной страницы (напр. "/catalog/category") Аналог $APPLICATION->GetCurDir()
Пример:
<?php
$request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest()->getQueryList();
echo $paramSort = $request->get('SORT_BY'); // Получение конкретного параметра
echo $paramTest = $request->get('TEST');
?>
Bitrix\Main\Server
Объект сервера позволяет получить информацию из суперглобального массива $_SERVER, а также некоторую другую информацию.
$server = $context->getServer();
// Или более краткая форма:
$server = Context::getCurrent()->getServer();
$server->get('HTTP_ACCEPT');// Любое значение из $_SERVER
$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
$request->getRemoteAddress() //аналог $_SERVER["REMOTE_ADDR"]
$request->getUserAgent() //аналог $_SERVER["HTTP_USER_AGENT"]
URI
use Bitrix\Main\Application,
Bitrix\Main\Web\Uri;
$request = Application::getInstance()->getContext()->getRequest();
$uriString = $request->getRequestUri();
$uri = new Uri($uriString); // Получаем объект
$uri->deleteParams(array("SORT_BY")); // Удаляем параметр
$uri->addParams(array("TESTING" => "111")); // Добавляем параметр
$redirect = $uri->getUri(); //Результирующую ссылку
// Аналог. TESTING - удаляет, SORT_BY - удаляет
echo $APPLICATION->GetCurPageParam("TESTING=123", array("SORT_BY"));
Deprecated
if (!empty($_REQUEST['name']) and !empty($_REQUEST['description'])) {
...
HTTP
use \Bitrix\Main\Application;
use \Bitrix\Main\Web\Uri;
use \Bitrix\Main\Web\HttpClient;
//URI
$uri = new Uri("http://username:[email protected]/some/path/?param1=value#comments");
$uri->getLocator();
$uri->getUri();
$uri->getHost();
$uri->getUser();
$uri->getPass();
$uri->getPath();
$uri->getPathQuery();
$uri->getPort();
$uri->getQuery();
$uri->getScheme();
$uri->deleteParams(array("param1"));
$uri->getUri();
$uri->addParams(array("param2" => "value"));
$uri->getUri();
//HTTP Client
$options = array(
"redirect" => true,
"redirectMax" => 5,
"waitResponse" => true,
"socketTimeout" => 30,
"streamTimeout" => 60,
"version" => HttpClient::HTTP_1_0, // HttpClient::HTTP_1_0 or HttpClient::HTTP_1_1
"proxyHost" => "",
"proxyPort" => "",
"proxyUser" => "",
"proxyPassword" => "",
"compress" => false, // Accept-Encoding: gzip
"charset" => "", //request body charset
"disableSslVerification" => false,
);
$httpClient = new HttpClient($options);
//headers
$name = "User-Agent";
$value = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A";
$httpClient->setHeader($name, $value, true);
//cookies
$cookies = array(
"name" => "value",
);
$httpClient->setCookies($cookies);
//basic auth
$httpClient->setAuthorization($user, $pass);
//send request
//methods - HttpClient::HTTP_GET, HttpClient::HTTP_POST, HttpClient::HTTP_PUT, HttpClient::HTTP_HEAD и HttpClient::HTTP_PATCH.
$httpClient->query($method, $url, $entityBody = null);
//result
$httpClient->getResult();
$httpClient->getStatus();
$httpClient->getContentType();
$httpClient->getEffectiveUrl();
$httpClient->getCookies();
$httpClient->getHeaders();
$httpClient->getError();
//download file
$httpClient->download('http://example.com/file.pdf', Application::getDocumentRoot() . '/upload/example/document.pdf');