2015-08-17 17:00:26 -07:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Component\Routing\Generator ;
use Symfony\Component\Routing\Exception\InvalidParameterException ;
use Symfony\Component\Routing\Exception\MissingMandatoryParametersException ;
use Symfony\Component\Routing\Exception\RouteNotFoundException ;
use Symfony\Component\Routing\RequestContextAwareInterface ;
/**
* UrlGeneratorInterface is the interface that all URL generator classes must implement .
*
* The constants in this interface define the different types of resource references that
* are declared in RFC 3986 : http :// tools . ietf . org / html / rfc3986
* We are using the term " URL " instead of " URI " as this is more common in web applications
* and we do not need to distinguish them as the difference is mostly semantical and
* less technical . Generating URIs , i . e . representation - independent resource identifiers ,
* is also possible .
*
* @ author Fabien Potencier < fabien @ symfony . com >
* @ author Tobias Schultze < http :// tobion . de >
*/
interface UrlGeneratorInterface extends RequestContextAwareInterface
{
/**
* Generates an absolute URL , e . g . " http://example.com/dir/file " .
*/
2016-04-20 09:56:34 -07:00
const ABSOLUTE_URL = 0 ;
2015-08-17 17:00:26 -07:00
/**
* Generates an absolute path , e . g . " /dir/file " .
*/
2016-04-20 09:56:34 -07:00
const ABSOLUTE_PATH = 1 ;
2015-08-17 17:00:26 -07:00
/**
* Generates a relative path based on the current request path , e . g . " ../parent-file " .
*
* @ see UrlGenerator :: getRelativePath ()
*/
2016-04-20 09:56:34 -07:00
const RELATIVE_PATH = 2 ;
2015-08-17 17:00:26 -07:00
/**
* Generates a network path , e . g . " //example.com/dir/file " .
* Such reference reuses the current scheme but specifies the host .
*/
2016-04-20 09:56:34 -07:00
const NETWORK_PATH = 3 ;
2015-08-17 17:00:26 -07:00
/**
* Generates a URL or path for a specific route based on the given parameters .
*
* Parameters that reference placeholders in the route pattern will substitute them in the
* path or host . Extra params are added as query string to the URL .
*
* When the passed reference type cannot be generated for the route because it requires a different
* host or scheme than the current one , the method will return a more comprehensive reference
* that includes the required params . For example , when you call this method with $referenceType = ABSOLUTE_PATH
* but the route requires the https scheme whereas the current scheme is http , it will instead return an
* ABSOLUTE_URL with the https scheme and the current host . This makes sure the generated URL matches
* the route in any case .
*
* If there is no route with the given name , the generator must throw the RouteNotFoundException .
*
2016-04-20 09:56:34 -07:00
* @ param string $name The name of the route
* @ param mixed $parameters An array of parameters
* @ param int $referenceType The type of reference to be generated ( one of the constants )
2015-08-17 17:00:26 -07:00
*
* @ return string The generated URL
*
* @ throws RouteNotFoundException If the named route doesn ' t exist
* @ throws MissingMandatoryParametersException When some parameters are missing that are mandatory for the route
* @ throws InvalidParameterException When a parameter value for a placeholder is not correct because
* it does not match the requirement
*/
public function generate ( $name , $parameters = array (), $referenceType = self :: ABSOLUTE_PATH );
}