PHP Class lithium\net\http\Route

Typically, Route objects are created and handled through the Router class, as follows. When connecting a route, a Route object is instantiated behind the scenes, and added to the Router's collection. Router::connect("/{:controller}/{:action}"); This following matches a set of parameters against all Route objects contained in Router, and if a match is found, returns a string URL with parameters inserted into the URL pattern. Router::match(array("controller" => "users", "action" => "login")); // returns "/users/login" For more advanced routing, however, you can directly instantiate a Route object, a subclass, or any class that implements parse() and match() (see the documentation for each individual method) and configure it manually -- if, for example, you want the route to match different incoming URLs than it generates. $route = new Route(array( 'template' => '/users/{:user}', 'pattern' => '@^/u(?:sers)?(?:/(?P[^\/]+))$@', 'params' => array('controller' => 'users', 'action' => 'index'), 'match' => array('controller' => 'users', 'action' => 'index'), 'defaults' => array('controller' => 'users'), 'keys' => array('user' => 'user'), 'options' => array('compile' => false, 'wrap' => false) )); Router::connect($route); // this will match '/users/' or '/u/'.
See also: lithium\net\http\Route::compile()
See also: lithium\net\http\Router
Inheritance: extends lithium\core\Object
Show file Open project: unionofrad/lithium Class Usage Examples

Protected Properties

Property Type Description
$_autoConfig array Auto configuration properties. Also used as the list of properties to return when exporting this Route object to an array.
$_defaults array The default values for the keys present in the URL template.
$_formatters array Array of closures used to format route parameters when compiling URLs.
$_handler callable new Route(array( 'template' => '/photos/{:id:[0-9]+}.jpg', 'handler' => function($request) { return new Response(array( 'headers' => array('Content-type' => 'image/jpeg'), 'body' => Photos::first($request->id)->bytes() )); } });
$_keys array An array of route parameter names (i.e. {:foo}) that appear in the URL template.
$_match array The array of values that appear in the second parameter of Router::connect(), which are **not** present in the URL template. When matching a route, these parameters must appear **exactly** as specified here.
$_meta array An array of metadata parameters which must be present in the request in order for the route to match.
$_params array An array of key/value pairs representing the parameters of the route. For keys which match parameters present in the route template, the corresponding values match the default values of those parameters. Specifying a default value for a template parameter makes that parameter optional. Any other pairs specified must match exactly when doing a reverse lookup in order for the route to match.
$_pattern string This regular expression is typically _compiled_ down from the higher-level syntax used in $_template, but can be set manually with compilation turned off in the constructor for extra control or if you are using pre-compiled Route objects.
$_persist array An array of parameter names which will persist by default when generating URLs. By default, the 'controller' parameter is set to persist, which means that the controller name matched for a given request will be used to generate all URLs for that request, unless the 'controller' parameter is specified in that URL with another value.
$_subPatterns array An array of regular expression patterns used in route matching.
$_template string '/admin/{:controller}/{:id:\d+}/{:args}'. This string can contain any combination of... 1. fixed elements, i.e. '/admin' 2. plain capture elements, i.e. '/{:controller}' 3. capture elements paired with regular expressions, i.e. '/{:id:\d+}' 4. capture elements paired with named regular expression patterns, '/{:id:ID}' 5. the speciall wildcard capture element '{:args}'

Public Methods

Method Description
__construct ( array $config = [] ) : void Constructor.
canContinue ( ) : boolean Returns a boolean value indicating whether this is a continuation route. If true, this route will allow incoming requests to "fall through" to other routes, aggregating parameters for both this route and any subsequent routes.
compile ( ) : void Compiles URL templates into regular expression patterns for matching against request URLs, and extracts template parameters into match-parameter arrays.
export ( ) : array Exports the properties that make up the route to an array, for debugging, caching or introspection purposes.
match ( array $options = [] ) : string | boolean Matches a set of parameters against the route, and returns a URL string if the route matches the parameters.
parse ( Request $request, array $options = [] ) : object | boolean Attempts to parse a request object and determine its execution details.

Protected Methods

Method Description
_init ( )
_matchKeys ( array $options ) : mixed A helper method used by match() to verify that options required to match this route are present in a URL array.
_matchMethod ( array $options ) : mixed Helper used by Route::match() which check if the required http method is compatible with the route.
_regex ( string $regex, string $param, string $token, string $prefix ) : string Generates a sub-expression capture group for a route regex, using an optional user-supplied matching pattern.
_write ( array $options, array $defaults ) : string Writes a set of URL options to this route's template string.

Method Details

__construct() public method

Constructor.
public __construct ( array $config = [] ) : void
$config array Available configuration options are: - `'params'` _array_ - `'template'` _string_ - `'pattern'` _string_ - `'match'` _array_ - `'meta'` _array_ - `'defaults'` _array_ - `'keys'` _array_ - `'persist'` _array_ - `'handler'` _callable_ - `'continue'` _boolean_ - `'modifiers'` _array_ - `'formatters'` _array_ - `'unicode'` _boolean_
return void

_init() protected method

protected _init ( )

_matchKeys() protected method

A helper method used by match() to verify that options required to match this route are present in a URL array.
See also: lithium\net\http\Route::match()
protected _matchKeys ( array $options ) : mixed
$options array An array of URL parameters.
return mixed On success, returns an updated array of options, merged with defaults. On failure, returns `false`.

_matchMethod() protected method

Helper used by Route::match() which check if the required http method is compatible with the route.
See also: lithium\net\http\Route::match()
protected _matchMethod ( array $options ) : mixed
$options array An array of URL parameters.
return mixed On success, returns an updated array of options, On failure, returns `false`.

_regex() protected method

Generates a sub-expression capture group for a route regex, using an optional user-supplied matching pattern.
protected _regex ( string $regex, string $param, string $token, string $prefix ) : string
$regex string An optional user-supplied match pattern. If a route is defined like `"/{:id:\d+}"`, then the value will be `"\d+"`.
$param string The parameter name which the capture group is assigned to, i.e. `'controller'`, `'id'` or `'args'`.
$token string The full token representing a matched element in a route template, i.e. `'/{:action}'`, `'/{:path:js|css}'`, or `'.{:type}'`.
$prefix string The prefix character that separates the parameter from the other elements of the route. Usually `'.'` or `'/'`.
return string Returns the full route template, with the value of `$token` replaced with a generated regex capture group.

_write() protected method

Writes a set of URL options to this route's template string.
protected _write ( array $options, array $defaults ) : string
$options array The options to write to this route, with defaults pre-merged.
$defaults array The default template options for this route (contains hard-coded default values).
return string Returns the route template string with option values inserted.

canContinue() public method

Returns a boolean value indicating whether this is a continuation route. If true, this route will allow incoming requests to "fall through" to other routes, aggregating parameters for both this route and any subsequent routes.
public canContinue ( ) : boolean
return boolean Returns the value of `$_config['continue']`.

compile() public method

Compiles URL templates into regular expression patterns for matching against request URLs, and extracts template parameters into match-parameter arrays.
public compile ( ) : void
return void

export() public method

Exports the properties that make up the route to an array, for debugging, caching or introspection purposes.
public export ( ) : array
return array An array containing the properties of the route object, such as URL templates and parameter lists.

match() public method

Matches a set of parameters against the route, and returns a URL string if the route matches the parameters.
public match ( array $options = [] ) : string | boolean
$options array An array of parameters.
return string | boolean URL string on success, else `false` if the route didn't match.

parse() public method

Attempts to parse a request object and determine its execution details.
See also: lithium\net\http\Request
See also: lithium\net\http\Request::$params
See also: lithium\net\http\Route::$_handler
public parse ( Request $request, array $options = [] ) : object | boolean
$request Request A request object containing the details of the request to be routed.
$options array Used to determine the operation of the method, and override certain values in the `Request` object: - `'url'` _string_: If present, will be used to match in place of the `$url` property of `$request`.
return object | boolean If this route matches `$request`, returns the request with execution details attached to it (inside `Request::$params`). Alternatively when a route handler function was used, returns the result of its invocation. Returns `false` if the route never matched.

Property Details

$_autoConfig protected property

Auto configuration properties. Also used as the list of properties to return when exporting this Route object to an array.
See also: lithium\net\http\Route::export()
protected array $_autoConfig
return array

$_defaults protected property

The default values for the keys present in the URL template.
See also: lithium\net\http\Route::$_template
See also: lithium\net\http\Route::$_keys
protected array $_defaults
return array

$_formatters protected property

Array of closures used to format route parameters when compiling URLs.
See also: lithium\net\http\Router::formatters()
protected array $_formatters
return array

$_handler protected property

new Route(array( 'template' => '/photos/{:id:[0-9]+}.jpg', 'handler' => function($request) { return new Response(array( 'headers' => array('Content-type' => 'image/jpeg'), 'body' => Photos::first($request->id)->bytes() )); } });
See also: lithium\net\http\Route::parse()
See also: lithium\net\http\Response
protected callable $_handler
return callable

$_keys protected property

An array of route parameter names (i.e. {:foo}) that appear in the URL template.
See also: lithium\net\http\Route::$_template
protected array $_keys
return array

$_match protected property

The array of values that appear in the second parameter of Router::connect(), which are **not** present in the URL template. When matching a route, these parameters must appear **exactly** as specified here.
protected array $_match
return array

$_meta protected property

An array of metadata parameters which must be present in the request in order for the route to match.
protected array $_meta
return array

$_params protected property

An array of key/value pairs representing the parameters of the route. For keys which match parameters present in the route template, the corresponding values match the default values of those parameters. Specifying a default value for a template parameter makes that parameter optional. Any other pairs specified must match exactly when doing a reverse lookup in order for the route to match.
protected array $_params
return array

$_pattern protected property

This regular expression is typically _compiled_ down from the higher-level syntax used in $_template, but can be set manually with compilation turned off in the constructor for extra control or if you are using pre-compiled Route objects.
See also: lithium\net\http\Route::$_template
See also: lithium\net\http\Route::__construct()
protected string $_pattern
return string

$_persist protected property

An array of parameter names which will persist by default when generating URLs. By default, the 'controller' parameter is set to persist, which means that the controller name matched for a given request will be used to generate all URLs for that request, unless the 'controller' parameter is specified in that URL with another value.
protected array $_persist
return array

$_subPatterns protected property

An array of regular expression patterns used in route matching.
protected array $_subPatterns
return array

$_template protected property

'/admin/{:controller}/{:id:\d+}/{:args}'. This string can contain any combination of... 1. fixed elements, i.e. '/admin' 2. plain capture elements, i.e. '/{:controller}' 3. capture elements paired with regular expressions, i.e. '/{:id:\d+}' 4. capture elements paired with named regular expression patterns, '/{:id:ID}' 5. the speciall wildcard capture element '{:args}'
protected string $_template
return string