XmlLoggableExtractor   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 22
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 12
c 0
b 0
f 0
dl 0
loc 22
rs 10
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A extractPath() 0 18 4
1
<?php
2
3
namespace Locastic\Loggastic\Metadata\Extractor;
4
5
use Symfony\Component\Config\Util\XmlUtils;
6
use Symfony\Component\Security\Core\Exception\InvalidArgumentException;
7
8
final class XmlLoggableExtractor extends AbstractLoggableExtractor
9
{
10
    final public const RESOURCE_SCHEMA = __DIR__.'/schema/metadata.xsd';
11
12
    protected function extractPath(string $path): void
13
    {
14
        try {
15
            /** @var \SimpleXMLElement $xml */
16
            $xml = simplexml_import_dom(XmlUtils::loadFile($path, self::RESOURCE_SCHEMA));
17
        } catch (\InvalidArgumentException $e) {
18
            throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
19
        }
20
21
        foreach ($xml->loggable_class as $loggableClassConfig) {
22
            $loggableClass = (string) $loggableClassConfig['class'];
23
24
            $groups = [];
25
            foreach ($loggableClassConfig->group as $group) {
26
                $groups[] = (string) $group['name'];
27
            }
28
29
            $this->loggableClasses[$loggableClass] = ['groups' => $groups];
30
        }
31
    }
32
}
33