Passed
Push — master ( d3a94c...76e109 )
by Valentin
05:50
created

Extractor::extract()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.9
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Cycle\ORM\Promise\Declaration;
5
6
use Cycle\ORM\Promise\Traverser;
7
8
class Extractor
9
{
10
    /** @var Traverser */
11
    private $traverser;
12
13
    public function __construct(Traverser $traverser)
14
    {
15
        $this->traverser = $traverser;
16
    }
17
18
    public function extract(string $class): Declaration
19
    {
20
        $class = new \ReflectionClass($class);
21
22
        $properties = new Visitor\LocateProperties();
23
        $methods = new Visitor\LocateMethodsToBeProxied();
24
25
        $this->traverser->traverseFilename($class->getFileName(), $properties, $methods);
26
27
        return Declaration::create($properties->getProperties(), $methods->getMethods(), !empty($class->getConstructor()));
28
    }
29
}