abrahanzarza / http-bundle
此软件包最新版本(0.1.0)没有可用的许可证信息。
提供HTTP路由、请求和响应的模块
0.1.0
2023-02-04 10:47 UTC
Requires
- php: ^8.1
- php-di/php-di: ^6.3
- symfony/http-foundation: ^6.2
- symfony/http-kernel: ^6.2
- symfony/routing: ^6.2
Requires (Dev)
- phpunit/phpunit: ^9.5
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');
两个类,Controller 和 Middleware,都必须实现一个 __Invoke 方法。以下是一个控制器的示例
<?php
declare(strict_types=1);
namespace namespace\controllers;
class ControllerClass
{
public function __invoke(Request $request): Response
{
return new Response('Success response');
}
}