\Bitrix\Main\Server

74
Алексей,
\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, разработчику, ядро
Поделиться
Комментарии
Авторизуйтесь чтобы получать уведомления об ответе
Этот класс нужен для того, чтобы не использовать напрямую глобальную переменную $_SERVER.