taro / php-router
v1.0.1
2022-11-05 03:14 UTC
Requires
- phpunit/phpunit: ^9.3
This package is auto-updated.
Last update: 2024-09-05 07:16:07 UTC
README
这是一个基于php的URL路由类,它根据客户端从Web应用程序发送的请求返回目的地Controller等值。
特点
- 简洁易懂的路由定义方法
- 将路由定义汇总到路由文件中
- 通过缓存功能,可以将路由信息注册到缓存中,从而提高下一次执行的速度
- 内部通过路由信息生成树结构,实现执行效率的提升
执行速度
根据执行环境的不同,在CPU 4核心 3.50Ghz RAM 8GB的我的环境中,结果如下。
测量5次执行的平均值
使用方法
路由设置
创建路由设置用文件(参考routes/routes.php),在执行时指定文件路径到loadRoutes
方法。在此文件中,以下形式的路由定义文以$router
实例的方法形式进行描述。请注意,$router
实例在文件读取时由Router类传递。
使用与请求方法同名的方法定义每个路由
// メソッド名('URLのパス', '登録したい値', [オプション配列]) $router->post('/products', 'Products@store'); // パラメータは :パラメータ名 で指定 $router->put('/products/:id', 'Products@update'); $router->delete('/products/:id', 'Products@delete'); // 第3引数のオプションにmiddlewareを指定 $router->get('/products', 'Products@index', ['middleware'=>['auth','api']]);
将URL最后的参数设置为可选
// パラメータ名の末尾に ? を付けると、オプションになる $router->get('/users/:id?', 'routeWithOptionParam');
使用controller方法将CRUD的7个方法的路由批量注册
$router->controller('/tasks', 'TasksController'); // 以下のルートを登録 // GET /tasks TasksController@index // GET /tasks/:tasks TasksController@show // GET /tasks/create TasksController@create // GET /tasks/:tasks/edit TasksController@edit // POST /tasks TasksController@store // PUT /tasks/:tasks TasksController@update // DELETE /tasks/:tasks TasksController@delete
使用数组批量注册路由
$router->setRoutes([ ["GET","/" , 'index.html'], ["GET","/etc/php5/abc/:role" , "role.php"], ["GET","/etc/php5/cli/man/readme" , "man@readme.ini", ['middleware'=>'auth']], ]);
使用group方法应用公共处理
group参数
prefix
:指定内部路由定义中通用的URLmiddleware
:应用于路由的中间件名称
// group([グループパラメータ], function($router){ ここにルート定義文を記述 }) $router->group(['prefix'=>'order/:order_no','middleware'=>'admin'], function ($router) { $router->get('/shipping', 'Shipping@index'); // url => order/:order_no/shipping // group は入れ子にできる $router->group(['prefix'=>'payment'], function ($router) { $router->delete('/credit/:code', 'Credit@delete'); // url => order/:order_no/payment/credit/:code }); });
路由执行
- 创建Router类的实例。
- 传递配置文件路径,读取路由设置文件。
- 将URL和请求方法传递给类的
match
方法。 - 结果可以以数组的形式获取。
$router = new Router(); $router->loadRoutes([routes.phpへのパス]); // $router->showTrees(); 作成したルーティング木を表示 $url = '/products'; $result = $router->match($url, 'GET'); print_r($result);
路由结果
match
方法返回以下结构的返回值。
[ 'callback' => '登録されている値', 'url' => $url, 'params' => [ 'id' => 111, // ルートパラメータがある時、パラメーター名をキーとした配列を返す ] 'options' => [ 'middleware'=>['web'] ] ]
路由表显示
通过showTable
方法显示当前注册的路由表。
$router->showTable(); // ルーティング表表示 |Method |Url |Action |Options |DELETE |/tasks/:tasks |TaskController@delete |middleware=web | GET |/tasks/:tasks/edit |TaskController@edit |middleware=web | GET |/tasks/:tasks |TaskController@show |middleware=web | GET |/tasks/create |TaskController@create |middleware=web | GET |/tasks |TaskController@index |middleware=web | POST |/tasks |TaskController@store |middleware=web | PUT |/tasks/:tasks |TaskController@update |middleware=web
许可协议 (License)
Php Router是在MIT license下发布的。
Php Router是开源软件,根据MIT license许可。