\Bitrix\Main\Server

2k
Алексей,
\Bitrix\Main\Server

Этот класс нужен для того, чтобы не использовать напрямую глобальную переменную $_SERVER.

Этот класс нужен для того, чтобы не использовать напрямую глобальную переменную $_SERVER.

Для создания объекта необходимо обращаться через текущее соединение (getContext) экземпляра приложения (Application::getInstance). Вот так:

$server = \Bitrix\Main\Application::getInstance()->getContext()->getServer()

Методы:

$server->addFilter($filter); 
$server->getDocumentRoot(); // DOCUMENT_ROOT (/home/bitrix/www)
$server->getPersonalRoot(); // установленная папка root. Используется серверная переменнтая BX_PERSONAL_ROOT. Если переменная пустая - возвращается /bitrix
$server->getHttpHost(); // HTTP_HOST http хост сервера (blog.budagov.ru:443)
$server->getServerName(); // SERVER_NAME имя сервера (blog.budagov.ru)
$server->getServerAddr(); // SERVER_ADDR локальный IP сервера (127.0.0.1)
$server->getRemoteAddr(); // REMOTE_ADDR внешний IP сервера (31.129.214.29)
$server->getUserAgent(); // HTTP_USER_AGENT User Agent браузера (Mozilla/5.0 (Windows NT 10.0; Win64; ...)
$server->getServerPort(); // SERVER_PORT порт подключения, (443)
$server->getRequestScheme(); // REQUEST_SCHEME тип подключения, (http)
$server->getRequestUri(); // REQUEST_URI
$server->getRequestMethod(); // REQUEST_METHOD
$server->getPhpSelf(); // PHP_SELF
$server->getScriptName(); // SCRIPT_NAME

$server->rewriteUri($url, $queryString, $redirectStatus); //
$server->transferUri($url, $queryString); //
Так же доступны методы \Bitrix\Main\Type\Dictionary
$server->getRaw($name); 
$server->toArrayRaw(); 
$server->get($name); // получение любой переменной, $server->get('REQUEST_TIME')
$server->set($name, $value); // установить значение переменной, $server->set('DOCUMENT_ROOT', '/test/')
$server->getValues(); // все серверные переменные в виде массива
$server->setValues($values); // установить несколько переменных сразу, $server->setValues(['DOCUMENT_ROOT' => '/test/', 'SCRIPT_NAME' => 'test.php']);
$server->clear(); // удаляет все переменные
$server->count(); // считает количество серверных переменных, примерно как count($_SERVER)
$server->toArray(); // все данные в виде массива
$server->isEmpty(); // проверяет есть ли данные в серверных переменных
$server->jsonSerialize(); // по идее тут все данные в виде json, но судя по исходникам пока это аналог $server->toArray();

$server->current(); // Метод возвращает текущий элемент.
$server->next(); // Переход вперёд к следующему элементу
$server->key(); // Метод возвращает ключ текущего элемента.
$server->valid(); // Метод проверяет валидность текущей позиции.
$server->rewind(); // Метод возвращает итератор к первому элементу.
$server->offsetExists($offset); Существует ли смещение.
$server->offsetGet($offset); Установка по получению.
$server->offsetSet($offset, $value); Установка по смещению.
$server->offsetUnset($offset); Очистка по смещению.

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 23 марта 2022
примеры d7, разработчику, ядро
Поделиться
Похожие статьи
Какие скидки были применены к товарам в заказе
Нужен всего один метод OrderEdit::getOrderedDiscounts, его нет в документации, т.к. используется тол...
Читать дальше » 0
Алексей,
Как получить название единицы измерения товара
Да и вообще всю информацию о единице измерения товара. Сразу покажу готовый код для нового ядра битр...
Читать дальше » 0
Алексей,
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Этот класс нужен для того, чтобы не использовать напрямую глобальную переменную $_SERVER.