chubbyphp/chubbyphp-framework

一个尽可能简单、高性能的PSR-15中间件微框架,主要面向希望了解他们所使用的所有供应商的开发者。

5.1.1 2023-12-02 20:01 UTC

README

CI Coverage Status Mutation testing badge Latest Stable Version Total Downloads Monthly Downloads

bugs code_smells coverage duplicated_lines_density ncloc sqale_rating alert_status reliability_rating security_rating sqale_index vulnerabilities

描述

一个尽可能简单、高性能的中间件PSR-15微框架,主要面向希望了解他们所使用的所有供应商的开发者。

Workflow

要求

建议

路由器

任何实现了Chubbyphp\Framework\Router\RouteMatcherInterface的路由器都可以使用。

PSR 7 / PSR 17

安装

通过Composer安装chubbyphp/chubbyphp-framework

composer require chubbyphp/chubbyphp-framework "^5.1" \
    chubbyphp/chubbyphp-framework-router-fastroute "^2.1" \
    slim/psr7 "^1.5"

用法

<?php

declare(strict_types=1);

namespace App;

use Chubbyphp\Framework\Application;
use Chubbyphp\Framework\Middleware\ExceptionMiddleware;
use Chubbyphp\Framework\Middleware\RouteMatcherMiddleware;
use Chubbyphp\Framework\RequestHandler\CallbackRequestHandler;
use Chubbyphp\Framework\Router\FastRoute\RouteMatcher;
use Chubbyphp\Framework\Router\Route;
use Chubbyphp\Framework\Router\RoutesByName;
use Psr\Http\Message\ServerRequestInterface;
use Slim\Psr7\Factory\ResponseFactory;
use Slim\Psr7\Factory\ServerRequestFactory;

require __DIR__.'/vendor/autoload.php';

$responseFactory = new ResponseFactory();

$app = new Application([
    new ExceptionMiddleware($responseFactory, true),
    new RouteMatcherMiddleware(new RouteMatcher(new RoutesByName([
        Route::get('/hello/{name:[a-z]+}', 'hello', new CallbackRequestHandler(
            static function (ServerRequestInterface $request) use ($responseFactory) {
                $response = $responseFactory->createResponse();
                $response->getBody()->write(sprintf('Hello, %s', $request->getAttribute('name')));

                return $response;
            }
        ))
    ]))),
]);

$app->emit($app->handle((new ServerRequestFactory())->createFromGlobals()));

发射器

中间件

请求处理器

路由器

服务器

骨架

迁移

版权

2024 Dominik Zogg