ImageResizerServiceFactory   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 11
c 1
b 0
f 0
dl 0
loc 33
rs 10
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 22 4
1
<?php
2
3
namespace Rvdlee\ZfImageResizer\Factory\Service;
4
5
use Interop\Container\ContainerInterface;
6
use Rvdlee\ZfImageResizer\Exception\InvalidArgumentException;
7
use Rvdlee\ZfImageResizer\Exception\InvalidConfigurationException;
8
use Rvdlee\ZfImageResizer\Interfaces\ImageResizerInterface;
9
use Rvdlee\ZfImageResizer\Service\ImageResizerService;
10
use Zend\Log\Logger;
11
use Zend\Log\LoggerInterface;
12
use Zend\Log\Writer\Mock;
13
use Zend\Log\Writer\Stream;
14
use Zend\ServiceManager\Factory\FactoryInterface;
15
16
class ImageResizerServiceFactory implements FactoryInterface
17
{
18
    /**
19
     * @param ContainerInterface $container
20
     * @param string             $requestedName
21
     * @param array|null         $options
22
     *
23
     * @return object|ImageResizerService
24
     * @throws InvalidConfigurationException
25
     * @throws InvalidArgumentException
26
     */
27
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
28
    {
29
        /** @var array $config */
30
        $config = $container->get('config');
31
32
        if ( ! isset($config['rvdlee']['zf-image-resizer']['adapter'])) {
33
            throw new InvalidConfigurationException('We are missing configuration to make this code work.');
34
        }
35
36
        /** @var ImageResizerInterface $adapter */
37
        $adapter = $container->get($config['rvdlee']['zf-image-resizer']['adapter']);
38
39
        if (isset($options['logger']) && $options['logger'] instanceof LoggerInterface) {
40
            $logger = $options['logger'];
41
        } else {
42
            /** @var Logger $logger */
43
            $logger = $container->get(Logger::class);
44
            /** @var Stream $writer */
45
            $logger->addWriter(new Mock());
46
        }
47
48
        return new ImageResizerService($adapter, $logger);
49
    }
50
}