新建文件App\HttpController\Router.php
<?php
namespace App\HttpController;
use EasySwoole\Http\AbstractInterface\AbstractRouter;
use FastRoute\RouteCollector;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;
class Router extends AbstractRouter
{
function initialize(RouteCollector $routeCollector)
{
// TODO: Implement initialize() method.
// 开启全局模式拦截
$this->setGlobalMode(true);
// 设置路由匹配错误以及未找到方法的回调
$this->setMethodNotAllowCallBack(function (Request $request,Response $response){
$response->write('No treatment was found');
return false;//结束此次响应
});
$this->setRouterNotFoundCallBack(function (Request $request,Response $response){
$response->write('No route match was found');
return false;//结束此次响应
});
//访问http://192.168.41.137:9501/rpc对应App\HttpController\Index.php文件中rpc方法
$routeCollector->get('/rpc','/Index/rpc');
//访问http://192.168.41.137:9501返回this router index
$routeCollector->get('/',function (Request $request,Response $response){
$str = 'this router index';
$response->write($str);
});
$routeCollector->get('/test',function (Request $request,Response $response){
$response->write('this router test');
return '/Index/rpc';//重新定位到App\HttpController\Index.php文件中rpc方法
});
$routeCollector->get('/user/{id:\d+}',function (Request $request,Response $response){
$str = "id={$request->getQueryParam('id')}";
$response->write($str);
return false;//不在往下请求,结束响应
});
/**
* httpMethod 传入一个大写的HTTP方法字符串,单个方法直接传入字符串,需要拦截多个方法可以传入一个一维数组
* routePattern 路由规则
* handler 回调可以传入一个闭包,也可以传入控制器
*/
$routeCollector->addRoute('GET', '/router/{id:\d+}', function (Request $request, Response $response) {
$id = $request->getQueryParam('id');
$response->write('Userid : ' . $id);
return false;
});
}
}