1 <?php
 2  3  4 
 5 namespace Team3\PayU\SignatureCalculator;
 6 
 7 use Psr\Log\LoggerInterface;
 8 use Team3\PayU\Serializer\SerializerFactory;
 9 use Team3\PayU\SignatureCalculator\Encoder\EncoderFactory;
10 use Team3\PayU\SignatureCalculator\Encoder\EncoderInterface;
11 use Team3\PayU\SignatureCalculator\ParametersSorter\ParametersSorter;
12 
13 class OrderSignatureCalculatorFactory implements OrderSignatureCalculatorFactoryInterface
14 {
15     16 17 18 19 
20     public function build(LoggerInterface $logger)
21     {
22         return new OrderSignatureCalculator(
23             $this->getEncoder($logger),
24             $this->getParametersSorter($logger),
25             $logger
26         );
27     }
28 
29     private function getSerializer(LoggerInterface $logger)
30     {
31         $serializerFactory = new SerializerFactory();
32 
33         return $serializerFactory->build($logger);
34     }
35 
36     37 38 39 40 
41     private function getEncoder(LoggerInterface $logger)
42     {
43         $encoderFactory = new EncoderFactory();
44 
45         return $encoderFactory->build($logger);
46     }
47 
48     49 50 51 52 
53     private function getParametersSorter(LoggerInterface $logger)
54     {
55         return new ParametersSorter($this->getSerializer($logger));
56     }
57 }
58