Passed
Push — master ( ffdaaa...2bd757 )
by butschster
20:14 queued 13:13
created

ClassAware::addClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Spiral\Reactor\Traits;
6
7
use Nette\PhpGenerator\ClassLike;
8
use Nette\PhpGenerator\ClassType;
9
use Nette\PhpGenerator\Helpers;
10
use Spiral\Reactor\Aggregator\Classes;
11
use Spiral\Reactor\ClassDeclaration;
12
13
/**
14
 * @internal
15
 */
16
trait ClassAware
17
{
18 20
    public function addClass(string $name): ClassDeclaration
19
    {
20 20
        return ClassDeclaration::fromElement($this->element->addClass($name));
21
    }
22
23 3
    public function getClass(string $name): ClassDeclaration
24
    {
25
        /**
26
         * @psalm-suppress InternalClass
27
         * @psalm-suppress InternalMethod
28
         */
29 3
        return $this->getClasses()->get(Helpers::extractShortName($name));
30
    }
31
32 16
    public function getClasses(): Classes
33
    {
34 16
        $classes = \array_filter(
35 16
            $this->element->getClasses(),
36 16
            static fn (ClassLike $element): bool => $element instanceof ClassType
37 16
        );
38
39 16
        return new Classes(\array_map(
40 16
            static fn (ClassType $class): ClassDeclaration => ClassDeclaration::fromElement($class),
41 16
            $classes
42 16
        ));
43
    }
44
}
45