abrahanzarza/http-bundle

此软件包最新版本(0.1.0)没有可用的许可证信息。

提供HTTP路由、请求和响应的模块

0.1.0 2023-02-04 10:47 UTC

This package is auto-updated.

Last update: 2024-09-04 14:57:49 UTC


README

此库提供了一个具有基础功能、路由和依赖注入容器的微HTTP框架。

设置

要在项目中使用此库,请通过 composer 安装,或在您的 composer.json 文件中手动添加。

composer require abrahanzarza/http-bundle

这将安装项目中最新版本的库。

用法

基本配置

以下是一个基本配置使用的代码示例。在这个例子中,我们可以看到我们的应用程序是一个 HttpBundle 实例。这个实例接收一个 Symfony\Component\HttpFoundation\Request 请求参数,并返回一个 Symfony\Component\HttpFoundation\Response,该响应返回给客户端。

<?php

declare(strict_types=1);

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

use AbrahanZarza\HttpBundle\HttpBundle;
use Symfony\Component\HttpFoundation\Request;

$app = new HttpBundle();

// Define your dependencies
// Define your routes

$request = Request::createFromGlobals();
$response = $app->handle($request);

$response->send();

接下来是定义依赖关系和路由,我们将在后面看到如何构建。

定义依赖关系

使用 PHP-DI 语法来定义依赖关系。

$app->container->set(
    ClassName::class, 
    static fn(ContainerInterface $c) => new ClassName('params...')
);

如代码示例所示,我们正在使用我们的 $app DI 容器。

定义路由

要定义我们的HTTP应用程序路由,我们使用此语法

$app->route('method', 'path', 'ControllerClass');

如果我们需要在执行控制器逻辑之前使用中间件,我们可以使用

$app->route('method', 'path', 'ControllerClass', 'MiddlewareClass');

两个类,ControllerMiddleware,都必须实现一个 __Invoke 方法。以下是一个控制器的示例

<?php

declare(strict_types=1);

namespace namespace\controllers;

class ControllerClass
{
    public function __invoke(Request $request): Response
    {
        return new Response('Success response');
    }
}