Completed
Push — master ( f46373...d10f54 )
by
unknown
04:56
created

ParameterDefinition::defineDependency()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
ccs 3
cts 3
cp 1
cc 1
eloc 3
nc 1
nop 1
crap 1
1
<?php declare(strict_types = 1);
2
/**
3
 * Created by Ruslan Molodyko.
4
 * Date: 07.09.2016
5
 * Time: 5:53
6
 */
7
namespace samsonframework\container\definition;
8
9
use samsonframework\container\definition\reference\ReferenceInterface;
10
use samsonframework\container\exception\ReferenceNotImplementsException;
11
use samsonframework\container\metadata\ClassMetadata;
12
use samsonframework\container\metadata\MethodMetadata;
13
use samsonframework\container\metadata\ParameterMetadata;
14
15
/**
16
 * Class ParameterDefinition
17
 *
18
 * @author Ruslan Molodyko <[email protected]>
19
 */
20
class ParameterDefinition extends AbstractPropertyDefinition implements ParameterBuilderInterface
21
{
22
    /** @var string Property name */
23
    protected $parameterName;
24
25
    /**
26
     * Define argument
27
     *
28
     * @param ReferenceInterface $dependency
29
     * @return ParameterBuilderInterface
30
     */
31 2
    public function defineDependency(ReferenceInterface $dependency): ParameterBuilderInterface
32
    {
33 2
        $this->dependency = $dependency;
34
35 2
        return $this;
36
    }
37
38
    /**
39
     * Get property metadata
40
     *
41
     * @param ClassMetadata $classMetadata
42
     * @param MethodMetadata $methodMetadata
43
     * @return ParameterMetadata
44
     * @throws ReferenceNotImplementsException
45
     */
46
    public function toPropertyMetadata(ClassMetadata $classMetadata, MethodMetadata $methodMetadata): ParameterMetadata
47
    {
48
        $propertyMetadata = new ParameterMetadata($classMetadata, $methodMetadata);
49
        $propertyMetadata->name = $this->getParameterName();
50
        $propertyMetadata->dependency = $this->resolveReferenceValue($this->getDependency());
51
52
        return $propertyMetadata;
53
    }
54
55
    /**
56
     * @return string
57
     */
58
    public function getParameterName(): string
59
    {
60
        return $this->parameterName;
61
    }
62
63
    /**
64
     * @param string $parameterName
65
     * @return ParameterDefinition
66
     */
67 2
    public function setParameterName(string $parameterName): ParameterDefinition
68
    {
69 2
        $this->parameterName = $parameterName;
70
71 2
        return $this;
72
    }
73
}
74