jefyokta/oktaax

Oktaax 是一个开源的 Swoole HTTP 服务器库

v1.1.0 2024-09-19 09:15 UTC

This package is auto-updated.

Last update: 2024-09-19 09:20:42 UTC


README

PHP OpenSwoole MIT License

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){}