dionchaika / router

PSR RESTful 路由库

dev-master 2019-05-20 12:29 UTC

This package is auto-updated.

Last update: 2024-09-29 05:08:54 UTC


README

PSR RESTful 路由库

安装

composer require dionchaika/router:dev-master
<?php

require_once 'vendor/autoload.php';

为了创建美观的URL,在服务器公共目录中创建一个 .htaccess 文件(适用于Apache)

<IfModule mod_rewrite.c>

    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    RewriteCond %{HTTP:Authorization} .
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [L]

</IfModule>

配置

<?php

use Dionchaika\Router\Route;
use Dionchaika\Router\Router;
use Dionchaika\Http\ServerRequest;
use Dionchaika\Http\Utils\Emitter;
use Dionchaika\Router\RouteCollection;

$routes = new RouteCollection([

    new Route('GET', '/', '\\App\\Controllers\\Home'),
    new Route('GET', '/about', '\\App\\Controllers\\About'),
    new Route('GET', '/contact', '\\App\\Controllers\\Contact')

]);

$router = new Router($routes);

Emitter::emit($router->match(ServerRequest::createFromGlobals()));

基本用法

  1. 注册路由
<?php

use Dionchaika\Http\Factory\ResponseFactory;

$router->get('/', function ($request) {
    return (new ResponseFactory)
        ->createPlainTextResponse('Welcome!');
});

//
// Allowed request methods:
//
// $router->get( pattern, handler );
// $router->put( pattern, handler );
// $router->head( pattern, handler );
// $router->post( pattern, handler );
// $router->patch( pattern, handler );
// $router->delete( pattern, handler );
// $router->options( pattern, handler );
//