runtime/psr-17

支持任何 PSR-17 实现的 PSR 运行时

资助包维护!
nyholm

dev-main 2023-11-22 12:14 UTC

This package is auto-updated.

Last update: 2024-09-22 14:03:04 UTC


README

支持任何 PSR-17 兼容实现的运行时。

如果您是 Symfony 运行时组件的新手,请阅读 主 README 了解更多。

安装

安装此运行时以及提供 psr/http-factory-implementation 的包。

composer require runtime/psr-17 slim/psr7

同时更新您的 composer.json 并添加一些额外配置

{
    "require": {
        "...": "..."
    },
    "extra": {
        "runtime": {
            "psr17_server_request_factory": "Slim\\Psr7\\Factory\\ServerRequestFactory"
            "psr17_uri_factory": "Slim\\Psr7\\Factory\\UriFactory"
            "psr17_uploaded_file_factory": "Slim\\Psr7\\Factory\\UploadedFileFactory"
            "psr17_stream_factory": "Slim\\Psr7\\Factory\\StreamFactory"
        }
    }
}

使用方法

此运行时将自动被发现。您可以通过定义环境变量 APP_RUNTIME 来强制您的应用程序使用此运行时。

APP_RUNTIME=Runtime\Psr17\Runtime

PSR-7

// public/index.php

use Psr\Http\Message\ServerRequestInterface;
use Any\Psr7;

require_once dirname(__DIR__).'/vendor/autoload_runtime.php';

return function (ServerRequestInterface $request) {
    return new Psr7\Response(200, [], 'PSR-7');
};

PSR-15

// public/index.php

use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Any\Psr7;

require_once dirname(__DIR__).'/vendor/autoload_runtime.php';

class Application implements RequestHandlerInterface {
    // ...
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        return new Psr7\Response(200, [], 'PSR-15');
    }
}

return function (array $context) {
    return new Application($context['APP_ENV'] ?? 'dev');
};