CacheDefaultExpressions::process()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 16
ccs 0
cts 10
cp 0
rs 9.4286
cc 3
eloc 9
nc 3
nop 1
crap 12
1
<?php
2
3
namespace BrainExe\Expression\CompilerPass;
4
5
use BrainExe\Core\Traits\FileCacheTrait;
6
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use BrainExe\Core\Annotations\CompilerPass as CompilerPassAnnotation;
9
10
/**
11
 * @CompilerPassAnnotation
12
 */
13
class CacheDefaultExpressions implements CompilerPassInterface
14
{
15
    use FileCacheTrait;
16
17
    const CACHE_FILE = 'default_expressions.php';
18
19
    /**
20
     * {@inheritdoc}
21
     */
22
    public function process(ContainerBuilder $container)
23
    {
24
        $expressions = [];
25
        $serviceIds = $container->findTaggedServiceIds('default_expressions');
26
        foreach (array_keys($serviceIds) as $serviceId) {
27
            $definition = $container->getDefinition($serviceId);
28
29
            /** @var DefaultExpression $class */
30
            $class = $definition->getClass();
31
            foreach ($class::getDefaultExpressions() as $entity) {
32
                $expressions[$entity->expressionId] = $entity;
33
            }
34
        }
35
36
        $this->dumpVariableToCache(self::CACHE_FILE, $expressions);
37
    }
38
}
39