nabeelalihashmi/lightrouter-pack

快速且轻量级的PHP路由器

dev-main 2024-03-26 06:21 UTC

This package is auto-updated.

Last update: 2024-09-26 07:29:11 UTC


README

LightRouter

LightRouter

一个快速、简单且轻量级的PHP路由器。它还支持中间件。在测试中,它每秒可以处理8000+个请求。

LightRouter Speed Test

关于作者

Nabeel Ali

网站: https://iconiccodes.com

邮箱: mail2nabeelali@gmail.com

特性

* Fast
* Easy
* Lightweight
* Supports Middlewares
* Supports Dynamic Routes
* Supports GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD
* Handles Custom Responses (user nabeelalihashmi/LightHttp Package)

安装

composer require nabeelalihashmi/lightrouter

可选使用LightHttp包来自定义响应

composer require nabeelalihashmi/lighthttp

基本用法

在项目根目录中创建一个名为 .htaccess 的新文件。

Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . public/index.php [L]

以下是为 index.php 提供的示例代码

<?php
function getRoutes()
{
    return [
        ['GET', '/', [HomeController::class, 'index'], []],
        ['POST', '/', [HomeController::class, 'posts'], [LoginCheck::class]],
        ['GET', '/user/someuser/icon', [HomeController::class, 'index'], [LoginCheck::class]],
        ['GET', '/user/.+', [HomeController::class, 'user'], [LoginCheck::class]]
    ];
}


$router = new Router;
$router->setRoutes(getRoutes());
$router->setNotFound(function() {
    header('HTTP/1.1 404 Not Found');
    echo '404 Not Found';
});

$router->run();

以下为示例控制器

<?php

namespace App\Controllers;

class HomeController
{
    public function index()
    {
        echo 'Hi';
    }

    public function posts() {
        echo 'My posts';
    }

    public function user($id) {
        echo 'Here';
        var_dump($id);
    }
}

以下为示例中间件

<?php

namespace App\Middlewares;

use IconicCodes\LightRouter\IMiddleware;

class LoginCheck implements IMiddleware{
    public function handle() {
        return true;
    }
}

路由

执行

Request -> Before Middlewares -> Callback -> After Middlwares

您可以通过以下方法添加路由

  1. setRoutes
  2. addRoute

但首先您需要了解路由结构。在LightRouter中,路由结构是一个具有以下模式的数组

[
    'METHOD | String',
    'URI | String',
    'CALLBACK | Array or Callback',
    'BEFORE_MIDDLEWARES | Array'
    'After_MIDDLEWARES | Array'
]

您可以逐个设置路由,如下所示

$router->addRoute('GET', '/', [HomeController::class, 'index'], [MyMiddleware::class]);

或者您可以使用 setRoutes 方法一次性设置所有路由,如下所示

$router->setRoutes([
    ['GET', '/', [HomeController::class, 'index'], [MyMiddleware::class]],
    ['POST', '/', [HomeController::class, 'posts'], [MyMiddleware::class]],
    ['GET', '/user/someuser/icon', [HomeController::class, 'index'], [MyMiddleware::class]],
    ['GET', '/user/.+', [HomeController::class, 'user'], [MyMiddleware::class]]
]);

动态路由

LightRouter支持动态路由。您可以在URI中使用 .+,在回调函数中,您可以使用位置变量。

$router->addRoute('GET', '/user/.+/.*', [HomeController::class, 'user'], [MyMiddleware::class]);

class HomeController {
    public function user($id, $name) {
        var_dump($id);
        var_dump($name);
    }
}

响应

$router->response_type_interface_name = gettype('IconicCodes\LightHttp\Responses\IResponse);

您也可以创建自己的响应处理器。它必须具有 'handle' 方法。

方法

LightRouter只有这些方法

setRoutes(array $routes)

$router->setRoutes([...]);

addRoute($array route)

$router->addRoute('GET', '/', [HomeController::class, 'index'], [MyMiddleware::class]);

run()

$router->run();

setNotFound(callback $callback)

$router->setNotFound(function() {
    header('HTTP/1.1 404 Not Found');
    echo '404 Not Found';
});

许可证

LightRouter在以下条件下发布,具有以下条件

  • 不能用于创建成人应用。
  • 不能用于赌博应用。
  • 不能用于创建包含仇恨言论的应用。

MIT许可证

版权所有 2022 Nabeel Ali | IconicCodes.com

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

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

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

LightHttp

LightHttp

[开发中]

此项目正在开发中。

LightHttp 是一组用于构建PHP Web应用的类。

组件

  • 请求
  • 响应(s)
  • 会话
  • Cookie

请求

请求可以使用 LRequest 使用。支持文件上传,带有自动MIME检查。

    $file = $request->files->my_file;
    $file->upload('where', 'newName', true);

可用属性

  • server
  • method
  • input
  • request
  • files
  • primary_request

会话

可选提供安全会话处理程序。

  LSession::register_secure_handler();

可用方法

安装

composer require nabeelalihashmi/LightHttp

基本用法

许可证

LightHttp 采用宽松许可协议发布,以下为相关条件:

  • 不能用于创建成人应用。
  • 不能用于赌博应用。
  • 不能用于创建包含仇恨言论的应用。

MIT许可证

版权所有 2022 Nabeel Ali | IconicCodes.com

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

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

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