Interceptor 是一个基本的 PHP 路由器
v1.0.6
2018-11-30 10:04 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: ^7.5@dev
README
安装
运行 composer require mihaiblebea/interceptor
简单使用
示例
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Interceptor\Request;
use Interceptor\Route;
use Interceptor\Router;
use Interceptor\Response;
$request = new Request();
$router = new Router($request);
// Register user route
$router->add(Route::post('user/register', function($request) {
...
Response::asJson([
'response' => 'User has been registered'
]);
}));
// Get all users route
$router->add(Route::get('users/all', function($request) {
...
Response::asJson([
'users' => $users
]);
}));
try {
$router->run();
} catch(\Exception $e) {
...
print($e->getMessage());
return var_dump(404);
}
您也可以通过 Route 类的初始化来定义路由
示例
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Interceptor\Request;
use Interceptor\Route;
use Interceptor\Router;
use Interceptor\Response;
$request = new Request();
$router = new Router($request);
$register_route = new Route('user/register', function($request) {
...
}, 'POST');
router->add(register_route);
try {
$router->run();
} catch(\Exception $e) {
...
return var_dump(404);
}
全局中间件的使用
示例
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Interceptor\Request;
use Interceptor\Route;
use Interceptor\Router;
use Interceptor\Response;
use Interceptor\Middleware;
$request = new Request();
$router = new Router($request);
$auth_middleware = Middleware::apply(function($request) {
...
return $next;
});
// Bind the middleware to the Router object
$router->before(auth_middleware);
// OR
$router->before(Middleware::apply(function($request) {
...
return $next;
}));
// Login user route
$router->add(Route::post('users', function($request) {
...
}));
try {
$router->run();
} catch(\Exception $e) {
...
return var_dump(404);
}
特定路由中间件的使用
示例
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Interceptor\Request;
use Interceptor\Route;
use Interceptor\Router;
use Interceptor\Response;
use Interceptor\Middleware;
$request = new Request();
$router = new Router($request);
$middleware = Middleware::apply(function($request) {
...
$next;
});
// Login user route
$router->add(Route::post('users', function($request) {
...
}, middleware));
try {
$router->run();
} catch(\Exception $e) {
...
return var_dump(404);
}
请求对象
从请求对象获取 GET 或 POST 参数
示例
"/users/MihaiBlebea?age=28"
$router->add(Route::post('users/:user', function($request, $user) {
...
// Get the age from the request: '28'
var_dump($request->retrive('age'));
// OR
var_dump($request->dump()['age']);
// Get the username from the request: 'MihaiBlebea'
var_dump($request->getUrlArray()[1]);
// OR
var_dump($user);
}));
许可协议
特此授予任何获得本软件及其相关文档文件(以下简称“软件”)副本的人免费使用的权利,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供的人做同样的事,但以下条件除外
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,没有任何形式的保证,明示或暗示,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他方式,无论该索赔、损害或其他责任源于、产生于或与软件或其使用或其他方式有关。