# PHP пакет для управления URI
Пакет HttpSoft\Uri реализует Psr\Http\Message\UriInterface и нормализует URI в соответствии со спецификацией RFC 3986. В данный функционал входит: разбор, валидация и моделирование URI, а также впоследствии удобное манипулирование URI целиком и его частями отдельно.
Для этого пакета требуется PHP версии 7.4 или более поздней.
Установка пакета:
composer require httpsoft/http-uri # API
- HttpSoft\Uri\Uri — флагманский класс пакета, непосредственно реализующий Psr\Http\Message\UriInterface.
- HttpSoft\Uri\UriData — абстракция для удобного управления компонентами URI, используется внутри HttpSoft\Uri\Uri и HttpSoft\Uri\UriNormalizer.
- HttpSoft\Uri\UriFactory — фабрика для создания HttpSoft\Uri\Uri, реализует Psr\Http\Message\UriFactoryInterface.
- HttpSoft\Uri\UriNormalizer — валидирует и нормализует компоненты URI, реализует HttpSoft\Uri\UriNormalizerInterface.
# Использование
use HttpSoft\Uri\Uri;
use HttpSoft\Uri\UriFactory;
$uri = new Uri('https://example.com/path/to/action?key1=value&key2=значение');
// или
$uri = UriFactory::create('https://example.com/path/to/action?key1=value&key2=значение');
// или
$factory = new UriFactory();
$uri = $factory->createUri('https://example.com/path/to/action?key1=value&key2=значение');
$uri->getScheme(); // 'https'
$uri->getHost(); // 'example.com'
$uri->getPath(); // '/path/to/action'
$uriWithNewPath = $uri->withPath('new/path');
$uriWithNewPath->getPath(); // 'new/path'
$uri->getPath(); // '/path/to/action'
$uri->getQuery(); // 'key1=value&key2=%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5'
$uri->getRawQuery(); // 'key1=value&key2=значение'
$uri->get(); // 'https://example.com/path/to/action?key1=value&key2=%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5'
// эквивалентно:
(string) $uri; // echo $uri;
// незакодированная:
$uri->raw(); // 'https://example.com/path/to/action?key1=value&key2=значение' Подробное описание использования HttpSoft\Uri\Uri смотрите здесь.
HttpSoft\Uri\UriNormalizer может использоваться самостоятельно:
use HttpSoft\Uri\UriNormalizer;
$normalizer = new UriNormalizer();
$uriData = $normalizer->normalize('https://example.com/путь');
$uriData->getScheme(); // 'https'
$uriData->getHost(); // 'example.com'
$uriData->getPath(); // '/%D0%BF%D1%83%D1%82%D1%8C'
(string) $uriData; // 'https://example.com/%D0%BF%D1%83%D1%82%D1%8C'
$uriRawData = $normalizer->normalize('https://example.com/путь', true);
$uriData->getScheme(); // 'https'
$uriData->getHost(); // 'example.com'
$uriData->getPath(); // '/путь'
(string) $uriData; // 'https://example.com/путь' Подробное описание использования HttpSoft\Uri\UriNormalizer смотрите здесь.
