thecodingmachine / symfony-psr15-bridge
A bridge between Symfony middlewares (StackPHP) and compliant middleware for converting Symfony Http abstractions to PSR-15 and back.
Installs: 18 682
Dependents: 1
Suggesters: 0
Security: 0
Stars: 16
Watchers: 11
Forks: 6
Open Issues: 3
Requires
- php: >=7.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
- symfony/http-foundation: ^2.1 | ^3 | ^4
Requires (Dev)
- phpunit/phpunit: ^5.5
- satooshi/php-coveralls: ^1.0
- symfony/http-kernel: ^2.1 | ^3 | ^4
- symfony/psr-http-message-bridge: ^1.0
- zendframework/zend-diactoros: ^1.0
This package is auto-updated.
Last update: 2024-10-29 05:34:19 UTC
README
Bridges between Symfony HttpKernel (a.k.a. StackPHP Middleware) and PSR-15 middlewares.
Those adapters are built on top of the existing symfony/psr-http-message-bridge that bridges Symfony and PSR-7 HTTP messages.
Installation
The recommended way to install symfony-psr15-bridge is through Composer:
composer require thecodingmachine/symfony-psr15-bridge
Usage
By default, the Symfony HttpFoundation and HttpKernel are used. For PSR-7, the Zend-Diactoros implementation is used. These implementations can be changed if needed.
Wrapping a HttpKernel
<?php // Use the Psr15ToSymfonyBridge adapter $psr15Middleware = new Psr15ToSymfonyBridge($yourHttpKernel); // Handling PSR-7 requests $psr7Response = $psr15Middleware->process($psr7Request, $dummyNextPsr7Middleware);
Important: Symfony Http Kernels do not have the notion of "next" middlewares. Therefore, the "next" PSR-7 middleware
you pass to the process
method will never be called.
Wrapping a PSR-7 callback
<?php // Use the Psr15ToSymfonyBridge adapter $symfonyKernel = new SymfonyToPsr15Bridge($nextSymfonyMiddleware, $yourPsr15Middleware); // Handling Symfony requests $symfonyResponse = $symfonyKernel->handle($symfonyRequest);
Note: the adapter's constructor takes 2 middlewares: the "next" Symfony middleware that will be called by the "delegate" psr15 feature and the psr15 middleware to be wrapped.
Other known middleware adapters
I initially planned to submit this project as a PR to h4cc/stack-psr7-bridge (that was developed before the notion of "PSR-7 middleware" was standardized in http-interop that was itself the precursor to PSR-15). I soon realized that this was in fact a complete rewrite so I decided to create a new project for it.