https://github.com/heropoo/routing
A simple and fast route.Use tree structure storage, fast matching! 一个简单快速的路由,使用树形结构存储匹配更快!
https://github.com/heropoo/routing
php-router route router routing
Last synced: 5 months ago
JSON representation
A simple and fast route.Use tree structure storage, fast matching! 一个简单快速的路由,使用树形结构存储匹配更快!
- Host: GitHub
- URL: https://github.com/heropoo/routing
- Owner: heropoo
- License: mit
- Created: 2017-08-08T09:16:55.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2022-06-30T17:42:43.000Z (almost 4 years ago)
- Last Synced: 2025-09-28T22:50:35.396Z (9 months ago)
- Topics: php-router, route, router, routing
- Language: PHP
- Homepage:
- Size: 85 KB
- Stars: 10
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Routing
A simple and fast route.Use tree structure storage, fast matching! If you like, order a star for me~ ⭐
一个简单快速的路由,使用树形结构存储匹配更快! 如果你喜欢,帮我点个star吧~ ⭐
[中文说明](./README_CN.md)
[](https://packagist.org/packages/heropoo/routing)
[](https://packagist.org/packages/heropoo/routing)
[](./LICENSE)
## Install
To install it via `composer`
```sh
composer require heropoo/routing
```
## Feature
- Support restful style route
- Support route group and add some attributes (like namespace,middleware,prefix..)
- Support route params and limit param's type
- Support regex
- Use tree structure storage, fast matching!
## Example:
```php
'app\\controllers', //support controller namespace
'middleware'=>[ //support middleware
'startSession',
'verifyCSRFToken',
'auth'
],
'prefix'=>'' //support prefix
]);
// action also can be a Closure
$router->get('/', function(){
return 'Welcome \( ^▽^ )/';
});
//route parameter
$router->get('/hello/{name}', function($name){ // auto pick route param to Closure
return 'Hello '.$name;
});
$router->get('/login', 'UserController::login', 'login'); // name your route
$router->post('login', 'UserController::post_login');
//use route group
$router->group(['prefix'=>'user'], function(Router $router){
$router->post('delete/{id:\d+}', 'UserController::delete'); // {param:type pattern}
});
// match GET or POST request method
$router->match(['get', 'post'], '/api', 'ApiController::index');
// match all request method
$router->any('/other', 'ApiController::other');
// get all routes
var_dump($router->getRoutes());
/**
* match request
* @param string $path Request path, eg: /user/list
* @param string $method Request method, 'GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS''GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'
* @return array If not matched throw a UrlMatchException
* return [
* 'route' => $route, // Route
* 'params' => $params // array
* ];
*
*/
$res = $router->dispatch($path, $method);
var_dump($res);
```
Now use matched result to handle your controller's method or Closure! \( ^▽^ )/
## Tests
```
composer run-script test
```
## Sponsor
