f3-factory / fatfree-psr7-factory
PHP fat-free 框架的 PSR-7/17 工厂适配器
Requires
- php: >=8.0
- bcosca/fatfree-core: ^4.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
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 工厂直接实例化,不需要框架核心进行任何特殊处理。