- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- namespace Zend\Uri;
- /**
- * Interface defining an URI
- */
- interface UriInterface
- {
- /**
- * Create a new URI object
- *
- * @param Uri|string|null $uri
- * @throws Exception\InvalidArgumentException
- */
- public function __construct($uri = null);
- /**
- * Check if the URI is valid
- *
- * Note that a relative URI may still be valid
- *
- * @return bool
- */
- public function isValid();
- /**
- * Check if the URI is a valid relative URI
- *
- * @return bool
- */
- public function isValidRelative();
- /**
- * Check if the URI is an absolute or relative URI
- *
- * @return bool
- */
- public function isAbsolute();
- /**
- * Parse a URI string
- *
- * @param string $uri
- * @return Uri
- */
- public function parse($uri);
- /**
- * Compose the URI into a string
- *
- * @return string
- * @throws Exception\InvalidUriException
- */
- public function toString();
- /**
- * Normalize the URI
- *
- * Normalizing a URI includes removing any redundant parent directory or
- * current directory references from the path (e.g. foo/bar/../baz becomes
- * foo/baz), normalizing the scheme case, decoding any over-encoded
- * characters etc.
- *
- * Eventually, two normalized URLs pointing to the same resource should be
- * equal even if they were originally represented by two different strings
- *
- * @return Uri
- */
- public function normalize();
- /**
- * Convert the link to a relative link by substracting a base URI
- *
- * This is the opposite of resolving a relative link - i.e. creating a
- * relative reference link from an original URI and a base URI.
- *
- * If the two URIs do not intersect (e.g. the original URI is not in any
- * way related to the base URI) the URI will not be modified.
- *
- * @param Uri|string $baseUri
- * @return Uri
- */
- public function makeRelative($baseUri);
- /**
- * Get the scheme part of the URI
- *
- * @return string|null
- */
- public function getScheme();
- /**
- * Get the User-info (usually user:password) part
- *
- * @return string|null
- */
- public function getUserInfo();
- /**
- * Get the URI host
- *
- * @return string|null
- */
- public function getHost();
- /**
- * Get the URI port
- *
- * @return int|null
- */
- public function getPort();
- /**
- * Get the URI path
- *
- * @return string|null
- */
- public function getPath();
- /**
- * Get the URI query
- *
- * @return string|null
- */
- public function getQuery();
- /**
- * Return the query string as an associative array of key => value pairs
- *
- * This is an extension to RFC-3986 but is quite useful when working with
- * most common URI types
- *
- * @return array
- */
- public function getQueryAsArray();
- /**
- * Get the URI fragment
- *
- * @return string|null
- */
- public function getFragment();
- /**
- * Set the URI scheme
- *
- * If the scheme is not valid according to the generic scheme syntax or
- * is not acceptable by the specific URI class (e.g. 'http' or 'https' are
- * the only acceptable schemes for the Zend\Uri\Http class) an exception
- * will be thrown.
- *
- * You can check if a scheme is valid before setting it using the
- * validateScheme() method.
- *
- * @param string $scheme
- * @throws Exception\InvalidUriPartException
- * @return Uri
- */
- public function setScheme($scheme);
- /**
- * Set the URI User-info part (usually user:password)
- *
- * @param string $userInfo
- * @return Uri
- * @throws Exception\InvalidUriPartException If the schema definition
- * does not have this part
- */
- public function setUserInfo($userInfo);
- /**
- * Set the URI host
- *
- * Note that the generic syntax for URIs allows using host names which
- * are not necessarily IPv4 addresses or valid DNS host names. For example,
- * IPv6 addresses are allowed as well, and also an abstract "registered name"
- * which may be any name composed of a valid set of characters, including,
- * for example, tilda (~) and underscore (_) which are not allowed in DNS
- * names.
- *
- * Subclasses of Uri may impose more strict validation of host names - for
- * example the HTTP RFC clearly states that only IPv4 and valid DNS names
- * are allowed in HTTP URIs.
- *
- * @param string $host
- * @throws Exception\InvalidUriPartException
- * @return Uri
- */
- public function setHost($host);
- /**
- * Set the port part of the URI
- *
- * @param int $port
- * @return Uri
- */
- public function setPort($port);
- /**
- * Set the path
- *
- * @param string $path
- * @return Uri
- */
- public function setPath($path);
- /**
- * Set the query string
- *
- * If an array is provided, will encode this array of parameters into a
- * query string. Array values will be represented in the query string using
- * PHP's common square bracket notation.
- *
- * @param string|array $query
- * @return Uri
- */
- public function setQuery($query);
- /**
- * Set the URI fragment part
- *
- * @param string $fragment
- * @return Uri
- * @throws Exception\InvalidUriPartException If the schema definition
- * does not have this part
- */
- public function setFragment($fragment);
- /**
- * Magic method to convert the URI to a string
- *
- * @return string
- */
- public function __toString();
- }