Skip to content

Latest commit

 

History

History
28 lines (22 loc) · 953 Bytes

web_service_factory.md

File metadata and controls

28 lines (22 loc) · 953 Bytes

WebServiceFactory

Víme že Skautis vytváří objekty pro webové služby automaticky. WebServiceFactory dává způsob jak toto vytváření upravit. Předpokládejme že chceme logovat všechny request na Skautis a máme připravený web service decorator

Implementace

class LoggingWebServiceFactory implements WebServiceFactoryInterface
{
    //Logger pro logovani vsech requestu na SkautIS
    protected $logger;

    public function __construct(Logger $logger)
    {
        $this->logger = $logger;
    }


    public function createWebService($url, array $options)
    {
        $webService = new WebService($url, $options);
        $webService = new LoggerDecorator($webService, $this->logger);
        return $webService;
    }
}

V konfiguraci nahradíme defaultní WebServiceFactory na nasi novou factory. A to je vše. Logování funguje bez jediné změny v aplikačním kódu.