<?php
interface MiddlewareInterface
{
/**
* Process a request and return a response.
*
* Takes the incoming request and optionally modifies it before delegating
* to the next handler to get a response. May modify the response before
* ultimately returning it.
*
* @param RequestInterface $request
* @param ResponseInterface $response
* @param callable $next
*
* @return ResponseInterface
*/
public function __invoke(
RequestInterface $request,
ResponseInterface $response,
callable $next
);
}
interface ServerMiddlewareInterface extends MiddlewareInterface
{
/**
* Process a request and return a response.
*
* Takes the incoming request and optionally modifies it before delegating
* to the next handler to get a response. May modify the response before
* ultimately returning it.
*
* @param RequestInterface $request
* @param ResponseInterface $response
* @param callable $next
*
* @return ResponseInterface
*/
public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response,
callable $next
);
}
class AcmeMiddleware implements ServerMiddlewareInterface
{
public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response,
callable $next
) {
return $response;
}
}
Fatal error: Could not check compatibility between ServerMiddlewareInterface::__invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) and MiddlewareInterface::__invoke(RequestInterface $request, ResponseInterface $response, callable $next), because class RequestInterface is not available in /in/fVPAV on line 40
Process exited with code 255.
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Fatal error: Could not check compatibility between ServerMiddlewareInterface::__invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) and MiddlewareInterface::__invoke(RequestInterface $request, ResponseInterface $response, callable $next), because class RequestInterface is not available in /in/fVPAV on line 40
Process exited with code 255.
Fatal error: Declaration of ServerMiddlewareInterface::__invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) must be compatible with MiddlewareInterface::__invoke(RequestInterface $request, ResponseInterface $response, callable $next) in /in/fVPAV on line 25
Process exited with code 255.
Output for 5.5.0 - 5.5.35, 5.6.0 - 5.6.28
Fatal error: Declaration of ServerMiddlewareInterface::__invoke() must be compatible with MiddlewareInterface::__invoke(RequestInterface $request, ResponseInterface $response, callable $next) in /in/fVPAV on line 26
Process exited with code 255.