jefyokta / oktaax
Oktaax 是一个开源的 Swoole HTTP 服务器库
v1.1.0
2024-09-19 09:15 UTC
Requires
- php: >=8.0
- ext-openswoole: *
- illuminate/container: ^11.23
- illuminate/view: ^11.23
README
Oktaax 是一个轻量级且功能强大的 PHP 库,封装了 OpenSwoole HTTP 服务器。它专为想要使用 ExpressJs 启发式语法构建高性能、异步 PHP 应用程序的开发者设计。
v1.0.3 中的新功能
支持 Blade 作为模板引擎
示例
<?php $app = new Oktaa("127.0.0.1",80); //default: null $app->set('render_engine','blade'); //blade config //default cacheDir is yourviewsDir/cache/ $app->set('blade',['cacheDir'=>'path/to/your/cachedir']); $app->get("/",function(Request $req,Response $res){ //will render myblade.blade.php $res->render('myblade'); });
Oktaax\Http\Request 类
现在它将使用 Oktaax\Http\Request 作为参数。它具有所有 OpenSwoole\Http\Request 的属性和方法,并增加了一些额外的方法。
use Oktaax\Http\Request; use Oktaax\Htpp\Response; $app->get('/',function(Request $req, Response $res){ })
特性
- 简单直观的 API 用于创建路由
- 利用 OpenSwoole 异步处理 HTTP
- 易于设置和扩展
安装
composer require jefyokta/oktaax
示例用法
<?php require __DIR__."/vendor/autoload.php"; use Oktaax\Http\Response; use Swoole\Http\Request; use Oktaax\Http\APIResponse; use Oktaax\Oktaa; $app = new Oktaa("127.0.0.1",80); $app->get("/",function(Request $req,Response $res){ $res->render('myview'); }); $app->get("/users",function(Request $req,Response $res){ $users = fetchusers(); // example function $res->json(new APIresponse($users,'here all of the users','no error')) }); $app->start()
配置
OpenSwoole Http 服务器配置
如果您想设置 OpenSwoole http 服务器配置,可以使用 Oktaax::setServer()。有关完整的服务器配置列表,请参阅 OpenSwoole 服务器配置
<?php $app->setServer([ 'reactor_num' => 2, 'worker_num' => 4, 'backlog' => 128, 'max_request' => 50, 'dispatch_mode' => 1, ]);
Oktaax 配置
您可以根据需要自定义各种设置,例如视图、日志等的目录。
<?php // viewsDir by default is views/ // logDir by default is log $app->set("viewsDir","path/to/your/viewsDir"); // Now it will looking for path/to/your/viewsDir/index.php $app->get('/',fn($req,$res)=>$res->render('index'));
中间件支持
全局中间件
全局中间件在每次请求时都会运行
<?php use Oktaax\Http\Response; use Swoole\Http\Request; use Oktaax\Http\APIResponse; use Oktaax\Oktaa; $app = new Oktaax("127.0.0.1",80); $mymiddleware = function(Request $req, Response $res, $next){ echo "This is a Global middleware"; $next() }; $app->use($mymiddleware);
路由中间件
您也可以定义特定路由的中间件。
$tokenVerify =function(Request $req, Response $res, $next){ echo "This is a Route Middleware for route {$req->server['request_uri']}"; //your token verify logic here //decoded token example $user = ["username"=>"jefyokta","id"=>1]; $next((object) $user); }; $app->get('/users',function(Request $req, Response $res,$user){ $users = fetchusers(); // example function // another logic here $username = $user->username; $res->json(new APIresponse($users,"hi {$username}!, this is all of the users,",'no error')); },[$tokenVerify]); $app->start()
请求和响应类
请求类
Oktaax 仍然使用 Request 类从 OpenSwoole\Http\Request 类。
响应类
Oktaax 有自己的 Response 类,它扩展了 OpenSwoole\Http\Response 方法。它增加了 json 和 render 方法。您仍然可以通过 $response 属性访问原始的 OpenSwoole\Http\Response。
- 对于 json 方法,您必须传递 Oktaax\Http\APIResponse 作为其参数以保持一致的响应数据。
// APIresponse class params public function __construct(?array $data = [], ?string $msg = null, $error = null){}