XmlLoggableExtractor::extractPath()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 18
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 10
c 0
b 0
f 0
nc 4
nop 1
dl 0
loc 18
rs 9.9332
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