Download the PHP package thewunder/croute without Composer
On this page you can find all versions of the php package thewunder/croute. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package croute
Croute
Convention based routing for PHP based on Symfony components.
Croute is great because:
- You don't need to maintain a routing table
- Promotes consistent code organization
- Allows for customization through attributes and events
Install via Composer
Via the command line:
composer.phar require thewunder/croute ^2.0
Or add the following to the require section your composer.json:
"thewunder/croute": "^2.0"
Basics
Your index.php should look something like this:
Your controllers should look something like this:
The name of the controller determines which url it appears as:
- http://yourdomain/my/ -> Your\Controller\Namespace\MyController::indexAction()
- http://yourdomain/my/action -> Your\Controller\Namespace\MyController::actionAction()
It supports nested namespaces so that:
- http://yourdomain/level1/level2/save -> Your\Controller\Namespace\Level1\Level2\IndexController::saveAction()
Attributes
Croute optionally supports controller and action attributes. Two attributes are included out of the box, HttpMethod and Secure.
HttpMethod
Restricts the allowed http methods. Returns a 400 response if the method does not match.
Secure
Requires a secure connection. If the connection is not https send a 301 redirect to the same url with the https protocol.
Custom Attributes
To create a custom attribute, implement the RoutingAttribute interface on your attribute, and an AttributeHandler.
Add the attribute handler to the router, and your custom attribute will be ready to use.
Events
Symfony events are dispatched for every step in the routing process. A total of 12 events are dispatched in a successful request:
- router.request
- router.controller_loaded
- router.controller_loaded.{ControllerName}
- router.before_action
- router.before_action.{ControllerName}
- router.before_action.{ControllerName}.{actionName}
- router.after_action
- router.after_action.{ControllerName}
- router.after_action.{ControllerName}.{actionName}
- router.before_response_sent
- router.response_sent
- router.response_sent.{ControllerName}
- router.response_sent.{ControllerName}.{actionName}
The {ControllerName} will be sans 'Controller' and {actionName} sans 'Action' i.e IndexController::indexAction -> router.before_action.Index.index.
At any time before the response is sent, in an event listener you can set a response on the event to bypass the action and send instead.
Error Handling
Proper error handling is not really something that I can do for you. It's up to you to determine how to do logging, how and when to render a pretty error page. To handle errors, implement the EventHandlerInterface and set your error handler on the router. Your class will be called when common routing events occur (i.e. 404 errors) and when there is an exception during the routing process.
Contributing
Please see CONTRIBUTING for details.
All versions of croute with dependencies
symfony/http-foundation Version ^6.0|^7.0
symfony/routing Version ^6.0|^7.0
psr/event-dispatcher Version ^1.0
psr/container Version ^2.0