f3-factory/fatfree-psr7-factory

PHP fat-free 框架的 PSR-7/17 工厂适配器

dev-main 2022-11-13 21:04 UTC

This package is auto-updated.

Last update: 2024-09-14 01:17:32 UTC


README

这是一个插件,用于使框架核心启用 HTTP 消息的使用。

此包的目标是将任何兼容 PSR-17 的 HTTP 消息工厂注册到框架核心的依赖注入容器中,并使用这些工厂创建和填充一个 Request(或 ServerRequest)对象,包含所有可用的蜂巢数据,以便它可以被路由处理控制器或其他包使用。

安装

此插件需要 fatfree-core ^4.0,启用了 DI 容器,并且安装了一个 PSR-7 实现的包。

composer require f3-factory/fatfree-psr7-factory

用法

Http 消息对象(PSR-7)由相关的(PSR-17)工厂创建。

首先,我们需要为每个消息对象注册这些工厂。一些 PSR-17 工厂包为每个对象有不同的类,一些则对所有对象类型共享相同的类。

此示例使用我们自己的 fatfree-psr7 包中的 Psr17Factory,它非常快,当然也是轻量级的。

要安装它,请运行 composer require f3-factory/fatfree-psr7-factory 或安装您想使用的任何其他 PSR-7 和 PSR-17 包。

在您的入口控制器(例如 index.php)中

// create the plugin adapter
$psrAdapter = F3\Http\MessageFactory::instance();
// register the factories:
$psrAdapter->register(
    requestFactory:       Psr17Factory::class,
    responseFactory:      Psr17Factory::class,
    serverRequestFactory: Psr17Factory::class,
    uploadedFileFactory:  Psr17Factory::class,
    uriFactory:           Psr17Factory::class,
    streamFactory:        Psr17Factory::class,
);
// register the concrete Request / Response objects 
$psrAdapter->registerRequest(\F3\Http\Request::class);
$psrAdapter->registerResponse(\F3\Http\Response::class);
$psrAdapter->registerServerRequest(\F3\Http\ServerRequest::class);

注册 Request、ServerRequest 和 Response 对象将告诉依赖注入容器,当您在路由控制器中类型提示它们时,它应该使用哪个快捷方式来解析和填充对象。

// TODO: 在此处添加 DI 用法的示例

或者,您可以通过以下方式从当前可用的 $_SERVER 和蜂巢数据创建新的请求对象

MessageFactory::instance()->makeRequest();
// or 
MessageFactory::instance()->makeServerRequest();

Response,其他类应通过 PSR17 工厂直接实例化,不需要框架核心进行任何特殊处理。