logger = $logger ?: new NullLogger(); } /** * Process an incoming server request and return a response, optionally delegating * to the next middleware component to create the response. * * @param Request $request * @param DelegateInterface $delegate * * @return Response */ public function process(Request $request, DelegateInterface $delegate) { if ($request->getMethod() === self::METHOD_OPTIONS) { return new EmptyResponse(); } return $this->dispatch($request, $delegate); } /** * @param Request $request * @param DelegateInterface $delegate * @return null|Response */ abstract protected function dispatch(Request $request, DelegateInterface $delegate); }