nabeelalihashmi / lightrouter-pack
快速且轻量级的PHP路由器
This package is auto-updated.
Last update: 2024-09-26 07:29:11 UTC
README
LightRouter
一个快速、简单且轻量级的PHP路由器。它还支持中间件。在测试中,它每秒可以处理8000+个请求。
关于作者
特性
* 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
您可以通过以下方法添加路由
setRoutes
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 是一组用于构建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
特此授予任何获得此软件及其相关文档副本(以下简称“软件”)的人免费使用软件的权利,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供的人这样做,前提是以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是否因合同、侵权或其他行为而产生,无论是从软件或其使用或其他方式产生的。