<?php namespace Xentral\Modules\Postat\SOAP; use Xentral\Components\Logger\Logger; /** * Factory for new SoapService instances. * * A dedicated factory is needed because the configuration for the SOAP API * service depends on the context where it is being used, and therefore the * configuration cannot be injected directly into it by the DI container. */ class SoapServiceFactory { private $logger; public function __construct(Logger $logger) { $this->logger = $logger; } /** * Create a new Post.at SOAP API service from the given config array. * * @param array $soapConfig * * @throws PostAtException * * @return SoapService */ public function fromConfigArray(array $soapConfig): SoapService { $soapConfig = new Config($soapConfig); $client = new PostAtClient($soapConfig, $this->logger); return new SoapService($client); } }