requestFactory = $requestFactory; $this->responseFactory = $responseFactory; $this->serverRequestFactory = $serverRequestFactory; $this->streamFactory = $streamFactory; $this->uploadedFileFactory = $uploadedFileFactory; $this->uriFactory = $uriFactory; } public static function create( ?RequestFactoryInterface $requestFactory = null, ?ResponseFactoryInterface $responseFactory = null, ?ServerRequestFactoryInterface $serverRequestFactory = null, ?StreamFactoryInterface $streamFactory = null, ?UploadedFileFactoryInterface $uploadedFileFactory = null, ?UriFactoryInterface $uriFactory = null ): self { return new self( $requestFactory, $responseFactory, $serverRequestFactory, $streamFactory, $uploadedFileFactory, $uriFactory ); } public function resolveRequestFactory(): RequestFactoryInterface { return $this->requestFactory ??= Psr17FactoryDiscovery::findRequestFactory(); } public function resolveResponseFactory(): ResponseFactoryInterface { return $this->responseFactory ??= Psr17FactoryDiscovery::findResponseFactory(); } public function resolveServerRequestFactory(): ServerRequestFactoryInterface { return $this->serverRequestFactory ??= Psr17FactoryDiscovery::findServerRequestFactory(); } public function resolveStreamFactory(): StreamFactoryInterface { return $this->streamFactory ??= Psr17FactoryDiscovery::findStreamFactory(); } public function resolveUploadedFileFactory(): UploadedFileFactoryInterface { return $this->uploadedFileFactory ??= Psr17FactoryDiscovery::findUploadedFileFactory(); } public function resolveUriFactory(): UriFactoryInterface { return $this->uriFactory ??= Psr17FactoryDiscovery::findUriFactory(); } }