Completed
Push — master ( de3f17...511ed4 )
by Piotr
04:00
created

AnnotationWSDLBuilder::reflectionClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
/**
3
 * Copyright (C) 2013-2016
4
 * Piotr Olaszewski <[email protected]>
5
 *
6
 * Permission is hereby granted, free of charge, to any person obtaining a copy
7
 * of this software and associated documentation files (the "Software"), to deal
8
 * in the Software without restriction, including without limitation the rights
9
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
 * copies of the Software, and to permit persons to whom the Software is
11
 * furnished to do so, subject to the following conditions:
12
 *
13
 * The above copyright notice and this permission notice shall be included in
14
 * all copies or substantial portions of the Software.
15
 *
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
 * SOFTWARE.
23
 */
24
namespace WSDL\Builder;
25
26
use Doctrine\Common\Annotations\AnnotationReader;
27
use Doctrine\Common\Annotations\AnnotationRegistry;
28
use Ouzo\Utilities\Path;
29
use ReflectionClass;
30
use WSDL\Annotation\AnnotationBuilder;
31
32
/**
33
 * AnnotationWSDLBuilder
34
 *
35
 * @author Piotr Olaszewski <[email protected]>
36
 */
37
class AnnotationWSDLBuilder
38
{
39
    /**
40
     * @var string
41
     */
42
    private $class;
43
    /**
44
     * @var WSDLBuilder
45
     */
46
    private $builder;
47
    /**
48
     * @var AnnotationReader
49
     */
50
    private $annotationReader;
51
52
    /**
53
     * @param string $class
54
     */
55 3
    public function __construct($class)
56
    {
57 3
        AnnotationRegistry::registerAutoloadNamespace('WSDL\Annotation', Path::join(__DIR__, '..', '..'));
58 3
        $this->class = $class;
59 3
        $this->builder = WSDLBuilder::instance();
60 3
        $this->annotationReader = new AnnotationReader();
61 3
    }
62
63
    /**
64
     * @return ReflectionClass
65
     */
66 3
    private function reflectionClass()
67
    {
68 3
        return new ReflectionClass($this->class);
69
    }
70
71
    /**
72
     * @return $this
73
     */
74 3
    public function build()
75
    {
76 3
        $this->buildForClass();
77 3
        return $this;
78
    }
79
80
    /**
81
     * @return void
82
     */
83 3
    private function buildForClass()
84
    {
85
        /** @var AnnotationBuilder[] $classAnnotations */
86 3
        $classAnnotations = $this->annotationReader->getClassAnnotations($this->reflectionClass());
87 3
        foreach ($classAnnotations as $classAnnotation) {
88 3
            $classAnnotation->build($this->builder);
89 3
        }
90 3
    }
91
92
    /**
93
     * @return WSDLBuilder
94
     */
95 3
    public function getBuilder()
96
    {
97 3
        return $this->builder;
98
    }
99
}
100