Class EntityRoute
Matches entities to routes
This route will match by entity and map its fields to the URL pattern by comparing the field names with the template vars. This makes it easy and convenient to change routes globally.
Constants
- 
          
          arrayVALID_METHODS ¶['GET', 'PUT', 'POST', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD']Valid HTTP methods. 
Property Summary
- 
        $_compiledRoute protectedstring|nullThe compiled route regular expression 
- 
        $_extensions protectedstring[]List of connected extensions for this route. 
- 
        $_greedy protectedboolIs this route a greedy route? Greedy routes have a /*in their template
- 
        $_name protectedstring|nullThe name for a route. Fetch with Route::getName(); 
- 
        $braceKeys protectedboolTrack whether or not brace keys {var}were used.
- 
        $defaults publicarrayDefault parameters for a Route 
- 
        $keys publicarrayAn array of named segments in a Route. /{controller}/{action}/{id}has 3 key elements
- 
        $middleware protectedarrayList of middleware that should be applied. 
- 
        $options publicarrayAn array of additional parameters for the Route. 
- 
        $template publicstringThe routes template string. 
Method Summary
- 
          __construct() publicConstructor for a Route 
- 
          __set_state() public staticSet state magic method to support var_export 
- 
          _checkEntity() protectedChecks that we really deal with an entity object 
- 
          _matchMethod() protectedCheck whether or not the URL's HTTP method matches. 
- 
          _parseArgs() protectedParse passed parameters into a list of passed args. 
- 
          _parseExtension() protectedRemoves the extension from $url if it contains a registered extension. If no registered extension is found, no extension is returned and the URL is returned unmodified. 
- 
          _persistParams() protectedApply persistent parameters to a URL array. Persistent parameters are a special key used during route creation to force route parameters to persist when omitted from a URL array. 
- 
          _writeRoute() protectedBuilds a route regular expression. 
- 
          _writeUrl() protectedConverts a matching route array into a URL string. 
- 
          compile() publicCompiles the route's regular expression. 
- 
          compiled() publicCheck if a Route has been compiled into a regular expression. 
- 
          getExtensions() publicGet the supported extensions for this route. 
- 
          getMiddleware() publicGet the names of the middleware that should be applied to this route. 
- 
          getName() publicGet the standardized plugin.controller:action name for a route. 
- 
          hostMatches() publicCheck to see if the host matches the route requirements 
- 
          match() publicMatch by entity and map its fields to the URL pattern by comparing the field names with the template vars. 
- 
          normalizeAndValidateMethods() protectedNormalize method names to upper case and validate that they are valid HTTP methods. 
- 
          parse() publicChecks to see if the given URL can be parsed by this route. 
- 
          parseRequest() publicChecks to see if the given URL can be parsed by this route. 
- 
          setExtensions() publicSet the supported extensions for this route. 
- 
          setHost() publicSet host requirement 
- 
          setMethods() publicSet the accepted HTTP methods for this route. 
- 
          setMiddleware() publicSet the names of the middleware that should be applied to this route. 
- 
          setPass() publicSet the names of parameters that will be converted into passed parameters 
- 
          setPatterns() publicSet regexp patterns for routing parameters 
- 
          setPersist() publicSet the names of parameters that will persisted automatically 
- 
          staticPath() publicGet the static path portion for this route. 
Method Detail
__construct() ¶ public
__construct(string $template, array $defaults = [], array $options = [])Constructor for a Route
Options
- _ext- Defines the extensions used for this route.
- _middleware- Define the middleware names for this route.
- pass- Copies the listed parameters into params['pass'].
- _host- Define the host name pattern if you want this route to only match specific host names. You can use- .*and to create wildcard subdomains/hosts e.g.- *.example.commatches all subdomains on- example.com.
- _method- Defines the HTTP method(s) the route applies to. It can be a string or array of valid HTTP method name.
Parameters
- 
                string$template
- Template string with parameter placeholders 
- 
                array$defaults optional
- Defaults for the route. 
- 
                array$options optional
- Array of additional options for the Route 
Throws
InvalidArgumentExceptionWhen `$options['_method']` are not in `VALID_METHODS` list.
__set_state() ¶ public static
__set_state(array $fields): staticSet state magic method to support var_export
This method helps for applications that want to implement router caching.
Parameters
- 
                array$fields
- Key/Value of object attributes 
Returns
staticA new instance of the route
_checkEntity() ¶ protected
_checkEntity(ArrayAccess|array $entity): voidChecks that we really deal with an entity object
Parameters
- 
                ArrayAccess|array$entity
- Entity value from the URL options 
Returns
voidThrows
RuntimeException_matchMethod() ¶ protected
_matchMethod(array $url): boolCheck whether or not the URL's HTTP method matches.
Parameters
- 
                array$url
- The array for the URL being generated. 
Returns
bool_parseArgs() ¶ protected
_parseArgs(string $args, array $context): string[]Parse passed parameters into a list of passed args.
Return true if a given named $param's $val matches a given $rule depending on $context. Currently implemented rule types are controller, action and match that can be combined with each other.
Parameters
- 
                string$args
- A string with the passed params. eg. /1/foo 
- 
                array$context
- The current route context, which should contain controller/action keys. 
Returns
string[]Array of passed args.
_parseExtension() ¶ protected
_parseExtension(string $url): arrayRemoves the extension from $url if it contains a registered extension. If no registered extension is found, no extension is returned and the URL is returned unmodified.
Parameters
- 
                string$url
- The url to parse. 
Returns
arraycontaining url, extension
_persistParams() ¶ protected
_persistParams(array $url, array $params): arrayApply persistent parameters to a URL array. Persistent parameters are a special key used during route creation to force route parameters to persist when omitted from a URL array.
Parameters
- 
                array$url
- The array to apply persistent parameters to. 
- 
                array$params
- An array of persistent values to replace persistent ones. 
Returns
arrayAn array with persistent parameters applied.
_writeRoute() ¶ protected
_writeRoute(): voidBuilds a route regular expression.
Uses the template, defaults and options properties to compile a regular expression that can be used to parse request strings.
Returns
void_writeUrl() ¶ protected
_writeUrl(array $params, array $pass = [], array $query = []): stringConverts a matching route array into a URL string.
Composes the string URL using the template used to create the route.
Parameters
- 
                array$params
- The params to convert to a string url 
- 
                array$pass optional
- The additional passed arguments 
- 
                array$query optional
- An array of parameters 
Returns
stringComposed route string.
compile() ¶ public
compile(): stringCompiles the route's regular expression.
Modifies defaults property so all necessary keys are set and populates $this->names with the named routing elements.
Returns
stringReturns a string regular expression of the compiled route.
compiled() ¶ public
compiled(): boolCheck if a Route has been compiled into a regular expression.
Returns
boolgetExtensions() ¶ public
getExtensions(): string[]Get the supported extensions for this route.
Returns
string[]getMiddleware() ¶ public
getMiddleware(): arrayGet the names of the middleware that should be applied to this route.
Returns
arraygetName() ¶ public
getName(): stringGet the standardized plugin.controller:action name for a route.
Returns
stringhostMatches() ¶ public
hostMatches(string $host): boolCheck to see if the host matches the route requirements
Parameters
- 
                string$host
- The request's host name 
Returns
boolWhether or not the host matches any conditions set in for this route.
match() ¶ public
match(array $url, array $context = []): string|nullMatch by entity and map its fields to the URL pattern by comparing the field names with the template vars.
If a routing key is defined in both $url and the entity, the value defined
in $url will be preferred.
Parameters
- 
                array$url
- Array of parameters to convert to a string. 
- 
                array$context optional
- An array of the current request context. Contains information such as the current host, scheme, port, and base directory. 
Returns
string|nullEither a string URL or null.
normalizeAndValidateMethods() ¶ protected
normalizeAndValidateMethods(string|string[] $methods): string|string[]Normalize method names to upper case and validate that they are valid HTTP methods.
Parameters
- 
                string|string[]$methods
- Methods. 
Returns
string|string[]Throws
InvalidArgumentExceptionWhen methods are not in `VALID_METHODS` list.
parse() ¶ public
parse(string $url, string $method): array|nullChecks to see if the given URL can be parsed by this route.
If the route can be parsed an array of parameters will be returned; if not false will be returned. String URLs are parsed if they match a routes regular expression.
Parameters
- 
                string$url
- The URL to attempt to parse. 
- 
                string$method
- The HTTP method of the request being parsed. 
Returns
array|nullAn array of request parameters, or null on failure.
Throws
InvalidArgumentExceptionWhen method is not an empty string or in `VALID_METHODS` list.
parseRequest() ¶ public
parseRequest(Psr\Http\Message\ServerRequestInterface $request): array|nullChecks to see if the given URL can be parsed by this route.
If the route can be parsed an array of parameters will be returned; if not false will be returned.
Parameters
- 
                Psr\Http\Message\ServerRequestInterface$request
- The URL to attempt to parse. 
Returns
array|nullAn array of request parameters, or null on failure.
setExtensions() ¶ public
setExtensions(string[] $extensions): $thisSet the supported extensions for this route.
Parameters
- 
                string[]$extensions
- The extensions to set. 
Returns
$thissetHost() ¶ public
setHost(string $host): $thisSet host requirement
Parameters
- 
                string$host
- The host name this route is bound to 
Returns
$thissetMethods() ¶ public
setMethods(string[] $methods): $thisSet the accepted HTTP methods for this route.
Parameters
- 
                string[]$methods
- The HTTP methods to accept. 
Returns
$thisThrows
InvalidArgumentExceptionWhen methods are not in `VALID_METHODS` list.
setMiddleware() ¶ public
setMiddleware(array $middleware): $thisSet the names of the middleware that should be applied to this route.
Parameters
- 
                array$middleware
- The list of middleware names to apply to this route. Middleware names will not be checked until the route is matched. 
Returns
$thissetPass() ¶ public
setPass(string[] $names): $thisSet the names of parameters that will be converted into passed parameters
Parameters
- 
                string[]$names
- The names of the parameters that should be passed. 
Returns
$thissetPatterns() ¶ public
setPatterns(string[] $patterns): $thisSet regexp patterns for routing parameters
If any of your patterns contain multibyte values, the multibytePattern
mode will be enabled.
Parameters
- 
                string[]$patterns
- The patterns to apply to routing elements 
Returns
$thissetPersist() ¶ public
setPersist(array $names): $thisSet the names of parameters that will persisted automatically
Persistent parameters allow you to define which route parameters should be automatically
included when generating new URLs. You can override persistent parameters
by redefining them in a URL or remove them by setting the persistent parameter to false.
// remove a persistent 'date' parameter
Router::url(['date' => false', ...]);Parameters
- 
                array$names
- The names of the parameters that should be passed. 
Returns
$thisstaticPath() ¶ public
staticPath(): stringGet the static path portion for this route.
Returns
string