Download the PHP package dc/router without Composer
On this page you can find all versions of the php package dc/router. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package router
Short Description HTTP router
License MIT
Homepage http://github.com/digitalcreations/router
Informations about the package router
Installation
Or add it to composer.json
:
This package has a suggests dc/ioc
, but it really is a very strong recommendation. It will be painful to use without it.
Getting started
We strongly recommend you use this with the dc/ioc
package, which we use in all our samples for easy setup. This makes it easy to set up:
DC\Router is based around routes and controllers. A route is a single function that gets invoked when a URL is hit. A controller is a class containing one or more routes that can be invoked if its URL is matched. Here is an example:
The magic happens because of two steps:
- You are inheriting from
ControllerBase
, which implementsIController
for you. - You have decorated the
list
method with a@route
PhpDoc comment to specify which path this matches.
Routes
The special @route
PHPDoc comment specifies which URLs match the route. They support variables:
Parameter types
You can register your own parameter types. By simply implementing IParameterType
you can easily convert a input parameter from a URL into a full-fledged object:
You'll need to register this with your IoC container before the routing system is created:
Now you can use it in your own routes:
Dependency injection
If you use the setup above, controllers are injected when instantiated, so you can easily specify dependencies:
API controllers
If you want to make a JSON API, inherit from \DC\Router\JsonController
instead. Anything you return will automatically be serialized to JSON before being sent to the client.
These API controllers can also receive posted JSON data, provided the Content-Type
header is set correctly. To access the posted data in a route, use the getRequestBodyAsObject()
method: