Interceptor 是一个基本的 PHP 路由器

v1.0.6 2018-11-30 10:04 UTC

This package is auto-updated.

Last update: 2024-09-29 04:20:25 UTC


README

PHP Unit Tests | PHP Unit Tests

安装

运行 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);
}));

许可协议

特此授予任何获得本软件及其相关文档文件(以下简称“软件”)副本的人免费使用的权利,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供的人做同样的事,但以下条件除外

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,没有任何形式的保证,明示或暗示,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他方式,无论该索赔、损害或其他责任源于、产生于或与软件或其使用或其他方式有关。