ServiceFactory   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 5
eloc 16
dl 0
loc 32
ccs 0
cts 17
cp 0
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 27 5
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Fabiang\AsseticBundle\Factory;
6
7
use Assetic;
8
use Fabiang\AsseticBundle\Service;
9
use Laminas\Http\Request as HTTPRequest;
10
use Laminas\ServiceManager\Factory\FactoryInterface;
11
use Mezzio\Application as MezzioApp;
12
use Mezzio\Helper\UrlHelper;
13
use Psr\Container\ContainerInterface;
14
15
use function class_exists;
16
use function method_exists;
17
18
class ServiceFactory implements FactoryInterface
19
{
20
    /**
21
     * @param string $requestedName
22
     */
23
    public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null): Service
24
    {
25
        $asseticConfig = $container->get('AsseticConfiguration');
26
        if ($asseticConfig->detectBaseUrl()) {
27
            if (class_exists(MezzioApp::class)) { // is expressive app
28
                $urlHelper = $container->get(UrlHelper::class);
29
                $asseticConfig->setBaseUrl($urlHelper->getBasePath());
30
            } else {
31
                /** @var HTTPRequest $request */
32
                $request = $container->get('Request');
33
                if (method_exists($request, 'getBaseUrl')) {
34
                    $asseticConfig->setBaseUrl($request->getBaseUrl());
35
                }
36
            }
37
        }
38
39
        $asseticService = new Service($asseticConfig);
40
        $asseticService->setAssetManager($container->get(Assetic\AssetManager::class));
41
        $asseticService->setAssetWriter($container->get(Assetic\AssetWriter::class));
42
        $asseticService->setFilterManager($container->get(Assetic\FilterManager::class));
43
44
        // Cache buster is not mandatory
45
        if ($container->has('AsseticCacheBuster')) {
46
            $asseticService->setCacheBusterStrategy($container->get('AsseticCacheBuster'));
47
        }
48
49
        return $asseticService;
50
    }
51
}
52