public function resolveRelativeURI(string $uri)
	{
		/*
		 * NOTE: We don't use removeDotSegments in this
		 * algorithm since it's already done by this line!
		 */
		$relative = new URI();
		$relative->setURI($uri);

		if ($relative->getScheme() === $this->getScheme())
		{
			$relative->setScheme('');
		}

		$transformed = clone $relative;

		// 5.2.2 Transform References in a non-strict method (no scheme)
		if (! empty($relative->getAuthority()))
		{
			$transformed->setAuthority($relative->getAuthority())
					->setPath($relative->getPath())
					->setQuery($relative->getQuery());
		}
		else
		{
			if ($relative->getPath() === '')
			{
				$transformed->setPath($this->getPath());

				if ($relative->getQuery())
				{
					$transformed->setQuery($relative->getQuery());
				}
				else
				{
					$transformed->setQuery($this->getQuery());
				}
			}
			else
			{
				if (strpos($relative->getPath(), '/') === 0)
				{
					$transformed->setPath($relative->getPath());
				}
				else
				{
					$transformed->setPath($this->mergePaths($this, $relative));
				}

				$transformed->setQuery($relative->getQuery());
			}

			$transformed->setAuthority($this->getAuthority());
		}

		$transformed->setScheme($this->getScheme());

		$transformed->setFragment($relative->getFragment());

		return $transformed;
	}
public function resolveRelativeURI(string $uri)
	{
		/*
		 * NOTE: We don't use removeDotSegments in this
		 * algorithm since it's already done by this line!
		 */
		$relative = new URI();
		$relative->setURI($uri);

		if ($relative->getScheme() === $this->getScheme())
		{
			$relative->setScheme('');
		}

		$transformed = clone $relative;

		// 5.2.2 Transform References in a non-strict method (no scheme)
		if (! empty($relative->getAuthority()))
		{
			$transformed->setAuthority($relative->getAuthority())
					->setPath($relative->getPath())
					->setQuery($relative->getQuery());
		}
		else
		{
			if ($relative->getPath() === '')
			{
				$transformed->setPath($this->getPath());

				if ($relative->getQuery())
				{
					$transformed->setQuery($relative->getQuery());
				}
				else
				{
					$transformed->setQuery($this->getQuery());
				}
			}
			else
			{
				if (strpos($relative->getPath(), '/') === 0)
				{
					$transformed->setPath($relative->getPath());
				}
				else
				{
					$transformed->setPath($this->mergePaths($this, $relative));
				}

				$transformed->setQuery($relative->getQuery());
			}

			$transformed->setAuthority($this->getAuthority());
		}

		$transformed->setScheme($this->getScheme());

		$transformed->setFragment($relative->getFragment());

		return $transformed;
	}
public function resolveRelativeURI ( string $ uri ) { /*
		 * NOTE: We don't use removeDotSegments in this
		 * algorithm since it's already done by this line!
		 */ $ relative = new URI ( ) ; $ relative -> setURI ( $ uri ) ; if ( $ relative -> getScheme ( ) === $ this -> getScheme ( ) ) { $ relative -> setScheme ( '' ) ; } $ transformed = clone $ relative ; // 5.2.2 Transform References in a non-strict method (no scheme) if ( ! empty ( $ relative -> getAuthority ( ) ) ) { $ transformed -> setAuthority ( $ relative -> getAuthority ( ) ) -> setPath ( $ relative -> getPath ( ) ) -> setQuery ( $ relative -> getQuery ( ) ) ; } else { if ( $ relative -> getPath ( ) === '' ) { $ transformed -> setPath ( $ this -> getPath ( ) ) ; if ( $ relative -> getQuery ( ) ) { $ transformed -> setQuery ( $ relative -> getQuery ( ) ) ; } else { $ transformed -> setQuery ( $ this -> getQuery ( ) ) ; } } else { if ( strpos ( $ relative -> getPath ( ) , '/' ) === 0 ) { $ transformed -> setPath ( $ relative -> getPath ( ) ) ; } else { $ transformed -> setPath ( $ this -> mergePaths ( $ this , $ relative ) ) ; } $ transformed -> setQuery ( $ relative -> getQuery ( ) ) ; } $ transformed -> setAuthority ( $ this -> getAuthority ( ) ) ; } $ transformed -> setScheme ( $ this -> getScheme ( ) ) ; $ transformed -> setFragment ( $ relative -> getFragment ( ) ) ; return $ transformed ; }
Combines one URI string with this one based on the rules set out in
RFC 3986 Section 2

@see http://tools.ietf.org/html/rfc3986#section-5.2

@param string $uri

@return \CodeIgniter\HTTP\URI
Combines one URI string with this one based on the rules set out in RFC 3986 Section 2