messageFactoryResolver = $messageFactoryResolver ?? MessageFactoryResolver::create(); $this->psrClientResolver = $psrClientResolver ?? PsrClientResolver::create(); $this->httpPlugClientResolver = $httpPlugClientResolver ?? HttpPlugClientResolver::create(); } public static function create( ?MessageFactoryResolverInterface $messageFactoryResolver = null, ?PsrClientResolverInterface $psrClientResolver = null, ?HttpPlugClientResolverInterface $httpPlugClientResolver = null ): self { return new self($messageFactoryResolver, $psrClientResolver, $httpPlugClientResolver); } public function resolveRequestFactory(): RequestFactoryInterface { return $this->messageFactoryResolver->resolveRequestFactory(); } public function resolveResponseFactory(): ResponseFactoryInterface { return $this->messageFactoryResolver->resolveResponseFactory(); } public function resolveServerRequestFactory(): ServerRequestFactoryInterface { return $this->messageFactoryResolver->resolveServerRequestFactory(); } public function resolveStreamFactory(): StreamFactoryInterface { return $this->messageFactoryResolver->resolveStreamFactory(); } public function resolveUploadedFileFactory(): UploadedFileFactoryInterface { return $this->messageFactoryResolver->resolveUploadedFileFactory(); } public function resolveUriFactory(): UriFactoryInterface { return $this->messageFactoryResolver->resolveUriFactory(); } public function resolveHttpPlugAsyncClient(): HttpAsyncClient { return $this->httpPlugClientResolver->resolveHttpPlugAsyncClient(); } public function resolvePsrClient(): ClientInterface { return $this->psrClientResolver->resolvePsrClient(); } }