class Router implements Registrar (View source)

Traits

Properties

static protected array $macros The registered string macros. from Macroable
protected Dispatcher $events The event dispatcher instance.
protected Container $container The IoC container instance.
protected RouteCollection $routes The route collection instance.
protected Route $current The currently dispatched route instance.
protected Request $currentRequest The request currently being dispatched.
protected array $middleware All of the short-hand keys for middlewares.
protected array $middlewareGroups All of the middleware groups.
array $middlewarePriority The priority-sorted list of middleware.
protected array $binders The registered route value binders.
protected array $patterns The globally available parameter patterns.
protected array $groupStack The route group attribute stack.
static array $verbs All of the verbs supported by the router.

Methods

static void
macro(string $name, callable $macro)

Register a custom macro.

from Macroable
static bool
hasMacro(string $name)

Checks if macro is registered.

from Macroable
static mixed
__callStatic(string $method, array $parameters)

Dynamically handle calls to the class.

from Macroable
mixed
__call(string $method, array $parameters)

Dynamically handle calls to the class.

from Macroable
void
__construct(Dispatcher $events, Container $container = null)

Create a new Router instance.

void
get(string $uri, Closure|array|string $action = null)

Register a new GET route with the router.

void
post(string $uri, Closure|array|string $action = null)

Register a new POST route with the router.

void
put(string $uri, Closure|array|string $action = null)

Register a new PUT route with the router.

void
patch(string $uri, Closure|array|string $action = null)

Register a new PATCH route with the router.

void
delete(string $uri, Closure|array|string $action = null)

Register a new DELETE route with the router.

void
options(string $uri, Closure|array|string $action = null)

Register a new OPTIONS route with the router.

any(string $uri, Closure|array|string|null $action = null)

Register a new route responding to all verbs.

void
match(array|string $methods, string $uri, Closure|array|string $action = null)

Register a new route with the given verbs.

void
singularResourceParameters(bool $singular = true)

Set the unmapped global resource parameters to singular.

void
resourceParameters(array $parameters = [])

Set the global resource parameter mapping.

void
resources(array $resources)

Register an array of resource controllers.

void
resource(string $name, string $controller, array $options = [])

Route a resource to a controller.

void
auth()

Register the typical authentication routes for an application.

void
group(array $attributes, Closure $callback)

Create a route group with shared attributes.

void
updateGroupStack(array $attributes)

Update the group stack with the given attributes.

array
mergeWithLastGroup(array $new)

Merge the given array with the last group stack.

static array
mergeGroup(array $new, array $old)

Merge the given group attributes.

static string|null
formatUsesPrefix(array $new, array $old)

Format the uses prefix for the new group attributes.

static string|null
formatGroupPrefix(array $new, array $old)

Format the prefix for the new group attributes.

string
getLastGroupPrefix()

Get the prefix from the last group on the stack.

addRoute(array|string $methods, string $uri, Closure|array|string|null $action)

Add a route to the underlying route collection.

createRoute(array|string $methods, string $uri, mixed $action)

Create a new route instance.

newRoute(array|string $methods, string $uri, mixed $action)

Create a new Route object.

string
prefix(string $uri)

Prefix the given URI with the last prefix.

addWhereClausesToRoute(Route $route)

Add the necessary where clauses to the route based on its initial registration.

void
mergeGroupAttributesIntoRoute(Route $route)

Merge the group stack with the controller action.

bool
actionReferencesController(array $action)

Determine if the action is routing to a controller.

array
convertToControllerAction(array|string $action)

Add a controller based route action to the action array.

string
prependGroupUses(string $uses)

Prepend the last group uses onto the use clause.

dispatch(Request $request)

Dispatch the request to the application.

mixed
dispatchToRoute(Request $request)

Dispatch the request to a route and return the response.

mixed
runRouteWithinStack(Route $route, Request $request)

Run the given route within a Stack "onion" instance.

array
gatherRouteMiddleware(Route $route)

Gather the middleware for the given route.

string|array
resolveMiddlewareClassName(string $name)

Resolve the middleware name to a class name(s) preserving passed parameters.

array
parseMiddlewareGroup(string $name)

Parse the middleware group and format it for usage.

sortMiddleware(Collection $middlewares)

Sort the given middleware by priority.

findRoute(Request $request)

Find the route matching a given request.

substituteBindings(Route $route)

Substitute the route bindings onto the route.

void
substituteImplicitBindings(Route $route)

Substitute the implicit Eloquent model bindings for the route.

mixed
performBinding(string $key, string $value, Route $route)

Call the binding callback for the given key.

void
matched(string|callable $callback)

Register a route matched event listener.

array
getMiddleware()

Get all of the defined middleware short-hand names.

$this
middleware(string $name, string $class)

Register a short-hand name for a middleware.

$this
middlewareGroup(string $name, array $middleware)

Register a group of middleware.

$this
prependMiddlewareToGroup(string $group, string $middleware)

Add a middleware to the beginning of a middleware group.

$this
pushMiddlewareToGroup(string $group, string $middleware)

Add a middleware to the end of a middleware group.

void
model(string $key, string $class, Closure $callback = null)

Register a model binder for a wildcard.

void
bind(string $key, string|callable $binder)

Add a new route parameter binder.

createClassBinding(string $binding)

Create a class based binding using the IoC container.

void
pattern(string $key, string $pattern)

Set a global where pattern on all routes.

void
patterns(array $patterns)

Set a group of global where patterns on all routes.

prepareResponse(Request $request, mixed $response)

Create a response instance from the given value.

bool
hasGroupStack()

Determine if the router currently has a group stack.

array
getGroupStack()

Get the current group stack for the router.

mixed
input(string $key, string $default = null)

Get a route parameter for the current route.

getCurrentRoute()

Get the currently dispatched route instance.

current()

Get the currently dispatched route instance.

bool
has(string $name)

Check if a route with the given name exists.

string|null
currentRouteName()

Get the current route name.

bool
is()

Alias for the "currentRouteName" method.

bool
currentRouteNamed(string $name)

Determine if the current route matches a given name.

string|null
currentRouteAction()

Get the current route action.

bool
uses()

Alias for the "currentRouteUses" method.

bool
currentRouteUses(string $action)

Determine if the current route action matches a given action.

getCurrentRequest()

Get the request currently being dispatched.

getRoutes()

Get the underlying route collection.

void
setRoutes(RouteCollection $routes)

Set the route collection instance.

array
getPatterns()

Get the global "where" patterns.

Details

static void macro(string $name, callable $macro)

Register a custom macro.

Parameters

string $name
callable $macro

Return Value

void

static bool hasMacro(string $name)

Checks if macro is registered.

Parameters

string $name

Return Value

bool

static mixed __callStatic(string $method, array $parameters)

Dynamically handle calls to the class.

Parameters

string $method
array $parameters

Return Value

mixed

Exceptions

BadMethodCallException

mixed __call(string $method, array $parameters)

Dynamically handle calls to the class.

Parameters

string $method
array $parameters

Return Value

mixed

Exceptions

BadMethodCallException

void __construct(Dispatcher $events, Container $container = null)

Create a new Router instance.

Parameters

Dispatcher $events
Container $container

Return Value

void

void get(string $uri, Closure|array|string $action = null)

Register a new GET route with the router.

Parameters

string $uri
Closure|array|string $action

Return Value

void

void post(string $uri, Closure|array|string $action = null)

Register a new POST route with the router.

Parameters

string $uri
Closure|array|string $action

Return Value

void

void put(string $uri, Closure|array|string $action = null)

Register a new PUT route with the router.

Parameters

string $uri
Closure|array|string $action

Return Value

void

void patch(string $uri, Closure|array|string $action = null)

Register a new PATCH route with the router.

Parameters

string $uri
Closure|array|string $action

Return Value

void

void delete(string $uri, Closure|array|string $action = null)

Register a new DELETE route with the router.

Parameters

string $uri
Closure|array|string $action

Return Value

void

void options(string $uri, Closure|array|string $action = null)

Register a new OPTIONS route with the router.

Parameters

string $uri
Closure|array|string $action

Return Value

void

Route any(string $uri, Closure|array|string|null $action = null)

Register a new route responding to all verbs.

Parameters

string $uri
Closure|array|string|null $action

Return Value

Route

void match(array|string $methods, string $uri, Closure|array|string $action = null)

Register a new route with the given verbs.

Parameters

array|string $methods
string $uri
Closure|array|string $action

Return Value

void

void singularResourceParameters(bool $singular = true)

Set the unmapped global resource parameters to singular.

Parameters

bool $singular

Return Value

void

void resourceParameters(array $parameters = [])

Set the global resource parameter mapping.

Parameters

array $parameters

Return Value

void

void resources(array $resources)

Register an array of resource controllers.

Parameters

array $resources

Return Value

void

void resource(string $name, string $controller, array $options = [])

Route a resource to a controller.

Parameters

string $name
string $controller
array $options

Return Value

void

void auth()

Register the typical authentication routes for an application.

Return Value

void

void group(array $attributes, Closure $callback)

Create a route group with shared attributes.

Parameters

array $attributes
Closure $callback

Return Value

void

protected void updateGroupStack(array $attributes)

Update the group stack with the given attributes.

Parameters

array $attributes

Return Value

void

array mergeWithLastGroup(array $new)

Merge the given array with the last group stack.

Parameters

array $new

Return Value

array

static array mergeGroup(array $new, array $old)

Merge the given group attributes.

Parameters

array $new
array $old

Return Value

array

static protected string|null formatUsesPrefix(array $new, array $old)

Format the uses prefix for the new group attributes.

Parameters

array $new
array $old

Return Value

string|null

static protected string|null formatGroupPrefix(array $new, array $old)

Format the prefix for the new group attributes.

Parameters

array $new
array $old

Return Value

string|null

string getLastGroupPrefix()

Get the prefix from the last group on the stack.

Return Value

string

protected Route addRoute(array|string $methods, string $uri, Closure|array|string|null $action)

Add a route to the underlying route collection.

Parameters

array|string $methods
string $uri
Closure|array|string|null $action

Return Value

Route

protected Route createRoute(array|string $methods, string $uri, mixed $action)

Create a new route instance.

Parameters

array|string $methods
string $uri
mixed $action

Return Value

Route

protected Route newRoute(array|string $methods, string $uri, mixed $action)

Create a new Route object.

Parameters

array|string $methods
string $uri
mixed $action

Return Value

Route

protected string prefix(string $uri)

Prefix the given URI with the last prefix.

Parameters

string $uri

Return Value

string

protected Route addWhereClausesToRoute(Route $route)

Add the necessary where clauses to the route based on its initial registration.

Parameters

Route $route

Return Value

Route

protected void mergeGroupAttributesIntoRoute(Route $route)

Merge the group stack with the controller action.

Parameters

Route $route

Return Value

void

protected bool actionReferencesController(array $action)

Determine if the action is routing to a controller.

Parameters

array $action

Return Value

bool

protected array convertToControllerAction(array|string $action)

Add a controller based route action to the action array.

Parameters

array|string $action

Return Value

array

protected string prependGroupUses(string $uses)

Prepend the last group uses onto the use clause.

Parameters

string $uses

Return Value

string

Response dispatch(Request $request)

Dispatch the request to the application.

Parameters

Request $request

Return Value

Response

mixed dispatchToRoute(Request $request)

Dispatch the request to a route and return the response.

Parameters

Request $request

Return Value

mixed

protected mixed runRouteWithinStack(Route $route, Request $request)

Run the given route within a Stack "onion" instance.

Parameters

Route $route
Request $request

Return Value

mixed

array gatherRouteMiddleware(Route $route)

Gather the middleware for the given route.

Parameters

Route $route

Return Value

array

string|array resolveMiddlewareClassName(string $name)

Resolve the middleware name to a class name(s) preserving passed parameters.

Parameters

string $name

Return Value

string|array

protected array parseMiddlewareGroup(string $name)

Parse the middleware group and format it for usage.

Parameters

string $name

Return Value

array

protected Collection sortMiddleware(Collection $middlewares)

Sort the given middleware by priority.

Parameters

Collection $middlewares

Return Value

Collection

protected Route findRoute(Request $request)

Find the route matching a given request.

Parameters

Request $request

Return Value

Route

Route substituteBindings(Route $route)

Substitute the route bindings onto the route.

Parameters

Route $route

Return Value

Route

void substituteImplicitBindings(Route $route)

Substitute the implicit Eloquent model bindings for the route.

Parameters

Route $route

Return Value

void

protected mixed performBinding(string $key, string $value, Route $route)

Call the binding callback for the given key.

Parameters

string $key
string $value
Route $route

Return Value

mixed

void matched(string|callable $callback)

Register a route matched event listener.

Parameters

string|callable $callback

Return Value

void

array getMiddleware()

Get all of the defined middleware short-hand names.

Return Value

array

$this middleware(string $name, string $class)

Register a short-hand name for a middleware.

Parameters

string $name
string $class

Return Value

$this

$this middlewareGroup(string $name, array $middleware)

Register a group of middleware.

Parameters

string $name
array $middleware

Return Value

$this

$this prependMiddlewareToGroup(string $group, string $middleware)

Add a middleware to the beginning of a middleware group.

If the middleware is already in the group, it will not be added again.

Parameters

string $group
string $middleware

Return Value

$this

$this pushMiddlewareToGroup(string $group, string $middleware)

Add a middleware to the end of a middleware group.

If the middleware is already in the group, it will not be added again.

Parameters

string $group
string $middleware

Return Value

$this

void model(string $key, string $class, Closure $callback = null)

Register a model binder for a wildcard.

Parameters

string $key
string $class
Closure $callback

Return Value

void

Exceptions

NotFoundHttpException

void bind(string $key, string|callable $binder)

Add a new route parameter binder.

Parameters

string $key
string|callable $binder

Return Value

void

Closure createClassBinding(string $binding)

Create a class based binding using the IoC container.

Parameters

string $binding

Return Value

Closure

void pattern(string $key, string $pattern)

Set a global where pattern on all routes.

Parameters

string $key
string $pattern

Return Value

void

void patterns(array $patterns)

Set a group of global where patterns on all routes.

Parameters

array $patterns

Return Value

void

Response prepareResponse(Request $request, mixed $response)

Create a response instance from the given value.

Parameters

Request $request
mixed $response

Return Value

Response

bool hasGroupStack()

Determine if the router currently has a group stack.

Return Value

bool

array getGroupStack()

Get the current group stack for the router.

Return Value

array

mixed input(string $key, string $default = null)

Get a route parameter for the current route.

Parameters

string $key
string $default

Return Value

mixed

Route getCurrentRoute()

Get the currently dispatched route instance.

Return Value

Route

Route current()

Get the currently dispatched route instance.

Return Value

Route

bool has(string $name)

Check if a route with the given name exists.

Parameters

string $name

Return Value

bool

string|null currentRouteName()

Get the current route name.

Return Value

string|null

bool is()

Alias for the "currentRouteName" method.

Return Value

bool

bool currentRouteNamed(string $name)

Determine if the current route matches a given name.

Parameters

string $name

Return Value

bool

string|null currentRouteAction()

Get the current route action.

Return Value

string|null

bool uses()

Alias for the "currentRouteUses" method.

Return Value

bool

bool currentRouteUses(string $action)

Determine if the current route action matches a given action.

Parameters

string $action

Return Value

bool

Request getCurrentRequest()

Get the request currently being dispatched.

Return Value

Request

RouteCollection getRoutes()

Get the underlying route collection.

Return Value

RouteCollection

void setRoutes(RouteCollection $routes)

Set the route collection instance.

Parameters

RouteCollection $routes

Return Value

void

array getPatterns()

Get the global "where" patterns.

Return Value

array