All Notable changes to League\Uri\Interfaces will be documented in this file
7.8.1 - 2026-03-16
- None
Host::isIpis fixed to be more strict.UriString::resolveregression from previous minor version fixed see issue #184
- None
- None
7.8.0 - 2026-01-16
QueryString::composeandQueryString::composeFromValuea userland improvedhttp_build_querymethod.QueryExtractModeandQueryComposeModeEnum to improve query parsing and building.StringCoercionModeto normalize type coercion- Added support for
BackedEnum FragmentDirective::toFragmentValueDomainHostInteraface::isSubdomainOfDomainHostInteraface::hasSubdomainDomainHostInteraface::isSiblingOfDomainHostInteraface::parentHostDomainHostInteraface::commonAncestorWith- Added the
Transformableinterface
- Fix issue #177 improved userInfo encoding.
- Fix
UriString::resolvemethod. - Fix Type coercion when using the QueryString
- None
- None
7.7.0 - 2025-12-08
HostRecordclass to normalize parsing and caching Host resolutionHostTypeHost type enumeration list as defined by RFC3986HostFormatHost format enumaration list as defined by RFC3986/RFC3987
UriString::buildAuthorityshould fail if an optional component is present when the host is missing.UriString::buildshould fail if an optional component is present when the host is missing.
UriString::isValidHostuseHostRecord::isValidmethod instead
- None
7.6.0 - 2025-11-18
UriComponentInterface::equalsContidionableinterfaceUriInterface::resolveUriInterface::relativizeUriInterface::equalsUriInterface::toNormalizedStringUriInterface::withUsernameUriInterface::withPasswordIPv6\Converter::isIpv6IPv6\Converter::normalizeUriString::resolveUriString::removeDotSegmentsUriString::normalizeUriString::normalizeAuthorityUriString::containsRfc3986CharsUriString::containsRfc3987CharsUriString::isValidSchemeUriString::isValidHostFeatureDetection::supportsDomEncoder::decodeNecessaryEncoder::decodePathEncoder::decodeQueryEncoder::decodeFragmentEncoder::isUserEncodedEncoder::isPasswordEncodedEncoder::isUserInfoEncodedEncoder::isPathEncodedEncoder::isQueryEncodedEncoder::isFragmentEncodedEncoder::normalizeUserEncoder::normalizePasswordEncoder::normalizeUserInfoEncoder::normalizePathEncoder::normalizeQueryEncoder::normalizeFragmentEncoder::normalizeHost
UriString::parsewill fail if the URI contains whitespace.UriString::buildUriallows all arguments to benullincluding thepath.UriString::buildAuthorityallows the$userargument to benulland still generate a user info component.
Encoder::decodePartialreplaced byEncoder::decodeNecessary
- Dependency to
psr/http-factorypackage which is never required in the package.
7.5.0 - 2024-12-08
UriInterface::toComponentsreturns an associative array containing all URI components values.UriInterface::getUsernamereturns the encoded user component of the URI.UriInterface::getPasswordreturns the encoded scheme-specific information about how to gain authorization to access the resource.Uri\IPv6\Converterallows expanding and compressing IPv6.Uri\IPv4\Converter::toIPv6Using6to4allows converting an IPv4 into an IPv6 host using the 6to4 notation.Uri\IPv4\Converter::toIPv6UsingMappingallows mapping an IPv4 address into an IPv6 one.- Using PHP8.4
Deprecatedattribute to signal deprecated public API methods and constants. HostInterface::encodedmethod to RFC3986 URL encode the host
- Adding Host resolution caching to speed up URI parsing in
UriString Uri\UriString::parseAuthorityacceptsStringableobject as valid inputUri\IPv4\Converter::toDecimalalso handles 6to4 and IPv4 mapped address algorithm.Uri\QueryString::extractandQueryString::convertstop parsing too early issue #146
UriInterface::getComponentsuseUriInterface::toComponents
- None
7.3.1 - 2024-02-23
- None
- Fix package to avoid PHP8.4 deprecation warnings
- None
- None
7.3.0 - 2023-09-09
League\Uri\Contracts\QueryInterface::withoutPairByKeyLeague\Uri\Contracts\QueryInterface::withoutPairByValueLeague\Uri\Contracts\QueryInterface::withoutPairByKeyValueLeague\Uri\Contracts\QueryInterface::toFormDataLeague\Uri\Contracts\QueryInterface::withoutPairByKeyValueLeague\Uri\KeyValuePair\Converter::fromFormDataLeague\Uri\KeyValuePair\Converter::separatormethodLeague\Uri\KeyValuePair\Converter::encondingMapmethod
League\Uri\KeyValuePair\Converterfix encoding when the value is a float or the booleanfalse- Exception message typo fix #121 by GrahamCampbell
Contracts\QueryInterface\QueryInterface::withoutPairuseContracts\QueryInterface\QueryInterface::withoutPairByKeyinstead.
- None
7.2.0 - 2023-08-30
League\Uri\Idna\Converter::isIdnLeague\Uri\Ipv4\Converter::isIpv4
- Add support for
Stringablehost object inLeague\Uri\Idna\Converterfeature. - Add support for
Stringablehost object inLeague\Uri\Exceptions\ConversionFailedfeature.
- None
- None
7.1.0 - 2023-08-21
League\Uri\Encoderto normalize encoding URI and URI components.League\Uri\KeyValuePair\Converterto parse and build key/value pair string.
- Rewrite
QueryStringclasses and fix query encoding for basic RFC3986. #109
- None
- None
7.0.0 - 2023-08-10
- New method to
UriComponentInterface::value - New method to
UriComponentInterface::toString - New method to
UserInfoInterface::withUser - New method to
UserInfoInterface::withPass - New method to
UriInterface::toString - New method to
UriInterface::getComponents League\Uri\IPv4toolsLeague\Uri\IdnatoolsLeague\Uri\UriStringparserLeague\Uri\QueryStringparser
- None
- None
- Support for PHP7
- Support for
__set_state UriComponentInterface::getContentis removed in favor ofUriComponentInterface::valueUriComponentInterface::withContentis removed with no replacement use other means to change the value of the component.UserInfoInterface::withUserInfois removed in favor ofUserInfoInterface::withUserandUserInfoInterface::withPass.HostInfoInterface::labelsis removed with no replacement use theIteratorAggregate::getIteratormethod instead.SegmentedPathInterface::segmentsis removed with no replacement use theIteratorAggregate::getIteratormethod instead.League\Uri\Idna\IdnauseLeague\Uri\Idna\ConverterinsteadLeague\Uri\Idna\IdnaInfouseLeague\Uri\Idna\ResultinsteadLeague\Uri\Exception\IdnSupportMissinguseLeague\Uri\Exception\MissingFeatureinstead
- IDNA processing classes
- None
- None
- Support for PHP7.1
- Support for PHP8 thanks to of someniatko
- None
- None
- None
League\Uri\Exceptions\FileinfoSupportMissingbased on the work of Nicolas Grekas
- Improved docblock.
- None
- None
- Nothing
- Remove useless docblock from
League\Uri\Contract\IpHostInterface::withoutZoneIdentifier
- None
- None
League\Uri\Contract\AuthorityInterfaceLeague\Uri\Contract\DataPathInterfaceLeague\Uri\Contract\DomainHostInterfaceLeague\Uri\Contract\FragmentInterfaceLeague\Uri\Contract\HostInterfaceLeague\Uri\Contract\IpHostInterfaceLeague\Uri\Contract\PathInterfaceLeague\Uri\Contract\PortInterfaceLeague\Uri\Contract\QueryInterfaceLeague\Uri\Contract\SegmentedPathInterfaceLeague\Uri\Contract\UriComponentInterfaceLeague\Uri\Contract\UriExceptionLeague\Uri\Contract\UriInterfaceLeague\Uri\Contract\UserInfoInterfaceLeague\Uri\Exception\EncodingNotFoundLeague\Uri\Exception\IdnSupportMissingLeague\Uri\Exception\SyntaxError
- None
- None
League\Uri\InterfacesnamespaceLeague\Uri\UriInterface- support for
PHP7.0
- None
- Make
League\Uri\Interfaces\UriimplementsLeague\Uri\UriInterface
- None
- None
League\Uri\UriInterface.
- None
League\Uri\Interfaces\UriuseLeague\Uri\UriInterfaceinstead.
- None
- None
- None
- None
League\Uri\Interfaces\Component. The interface is moved to the League URI Components package.
League\Uri\Interfaces\PathreplacesLeague\Uri\Interfaces\PathComponentLeague\Uri\Interfaces\Path::isEmpty
- None
- None
League\Uri\Interfaces\CollectionComponentLeague\Uri\Interfaces\PathComponent
League\Uri\Interfaces\Component::NO_ENCODINGto remove any specific encodingLeague\Uri\Interfaces\Component::RFC3986_ENCODINGto specify encoding according to RFC3986 rulesLeague\Uri\Interfaces\Component::RFC3987_ENCODINGto specify encoding according to RFC3987 rules
- Update
Component::getContentoptional parameter default.
- None
League\Uri\Interfaces\Component::RFC3986League\Uri\Interfaces\Component::RFC3987
League\Uri\Interfaces\Component::RFC3986to specify encoding according to RFC3986 rulesLeague\Uri\Interfaces\Component::RFC3987to specify encoding according to RFC3987 rules
League\Uri\Interfaces\Component::getContentnow takes an optional$enc_typeparameter to specify the returned content encoding rules.League\Uri\Interfaces\Uridocblocks simplified around Exception thrown
- None
- None
League\Uri\Interfaces\Component::getContentLeague\Uri\Interfaces\Component::withContentLeague\Uri\Interfaces\Component::isDefined
- Renamed
League\Uri\Interfaces\CollectiontoLeague\Uri\Interfaces\CollectionComponent - Renamed
League\Uri\Interfaces\PathtoLeague\Uri\Interfaces\PathComponent
- None
League\Uri\Interfaces\UriPartLeague\Uri\Interfaces\HierarchicalComponentLeague\Uri\Interfaces\SchemeLeague\Uri\Interfaces\UserLeague\Uri\Interfaces\PassLeague\Uri\Interfaces\UserInfoLeague\Uri\Interfaces\HostLeague\Uri\Interfaces\PortLeague\Uri\Interfaces\Path::withoutEmptySegmentsLeague\Uri\Interfaces\Path::hasTrailingSlashLeague\Uri\Interfaces\Path::withTrailingSlashLeague\Uri\Interfaces\Path::withoutTrailingSlashLeague\Uri\Interfaces\Path::getTypecodeLeague\Uri\Interfaces\Path::withTypecodeLeague\Uri\Interfaces\Path::FTP_TYPE_ASCIILeague\Uri\Interfaces\Path::FTP_TYPE_BINARYLeague\Uri\Interfaces\Path::FTP_TYPE_DIRECTORYLeague\Uri\Interfaces\Path::FTP_TYPE_EMPTYLeague\Uri\Interfaces\HierarchicalPathLeague\Uri\Interfaces\DataPathLeague\Uri\Interfaces\QueryLeague\Uri\Interfaces\Fragment