Работа с URL — рутинная задача: добавить GET-параметр, удалить «мусор», получить домен. В старом ядре использовались функции вроде $APPLICATION->GetCurPageParam.
В D7 появился специализированный класс \Bitrix\Main\Web\Uri, который делает эту работу объектно-ориентированной и безопасной.
1. Создание объекта Uri
use Bitrix\Main\Web\Uri;
use Bitrix\Main\Application;
// Из произвольной строки
$uri = new Uri("https://site.ru/catalog/shoes/?size=42&color=red#top");
// Из текущего запроса (самый частый кейс)
$request = Application::getInstance()->getContext()->getRequest();
$currentUri = new Uri($request->getRequestUri());2. Добавление и изменение параметров (addParams)
Метод добавляет новые параметры или перезаписывает существующие.
// Добавляем сортировку и удаляем старую пагинацию (если была)
$currentUri->addParams([
'sort' => 'price',
'order' => 'asc',
'page' => null // null не удаляет параметр, а делает его пустым (page=). Для удаления см. ниже.
]);
echo $currentUri->getUri(); // /catalog/shoes/?size=42&color=red&sort=price&order=asc3. Удаление параметров (deleteParams)
$currentUri->deleteParams(['size', 'color']);
echo $currentUri->getUri();4. Получение частей URL
Класс автоматически парсит строку и дает доступ к компонентам.
echo $uri->getScheme(); // https
echo $uri->getHost(); // site.ru
echo $uri->getPath(); // /catalog/shoes/
echo $uri->getQuery(); // size=42&color=red
echo $uri->getFragment(); // top5. Работа с системными параметрами
Часто нужно очистить URL от служебных параметров Битрикса (clear_cache, login, sessid и т.д.).
use Bitrix\Main\HttpRequest;
// Удаляем все системные параметры
$uri->deleteParams(HttpRequest::getSystemParameters());
Вывод:
Класс Uri — это единственный правильный способ программно изменять ссылки в D7.
Он корректно обрабатывает кодирование символов (urlencode) и гарантирует валидность итогового адреса.
Bitrix\Main\Web\Uri, работа с url битрикс, добавить параметры в url, удалить параметры из url, парсинг url, getQuery, addParams, deleteParams.