src/Web/Service.php
<?php
/**
*
*/
namespace Mvc5\Web;
use ArrayAccess;
use Mvc5\Http\Request;
use Mvc5\Http\Response;
use const Mvc5\REQUEST;
final class Service
{
/**
* @var ArrayAccess
*/
protected ArrayAccess $container;
/**
* @param ArrayAccess $container
*/
function __construct(ArrayAccess $container)
{
$this->container = $container;
}
/**
* @param Request $request
* @return Request
*/
protected function share(Request $request) : Request
{
return $this->container[REQUEST] = $request;
}
/**
* @param Request $request
* @param Response $response
* @param callable $next
* @return Response|mixed
*/
function __invoke(Request $request, Response $response, callable $next)
{
return $next($this->share($request), $response);
}
}