Completed
Push — master ( 360824...c62b77 )
by Bernhard
02:24
created

ClassBinding::equals()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 9
ccs 0
cts 0
cp 0
rs 9.6666
cc 2
eloc 4
nc 2
nop 1
crap 6
1
<?php
2
3
/*
4
 * This file is part of the webmozart/booking package.
5
 *
6
 * (c) Bernhard Schussek <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Puli\Discovery\Binding;
13
14
use Puli\Discovery\Api\Binding\Binding;
15
use Puli\Discovery\Api\Type\MissingParameterException;
16
use Puli\Discovery\Api\Type\NoSuchParameterException;
17
18
/**
19
 * Binds a class name to a binding type.
20
 *
21
 * @since  1.0
22
 *
23
 * @author Bernhard Schussek <[email protected]>
24
 */
25
class ClassBinding extends AbstractBinding
26
{
27
    /**
28
     * @var string
29
     */
30
    private $className;
31
32
    /**
33
     * Creates a new class binding.
34
     *
35
     * @param string $className       The fully-qualified name of the bound
36
     *                                class.
37
     * @param string $typeName        The name of the type to bind against.
38
     * @param array  $parameterValues The values of the parameters defined
39
     *                                for the type.
40
     *
41
     * @throws NoSuchParameterException  If an invalid parameter was passed.
42
     * @throws MissingParameterException If a required parameter was not passed.
43
     */
44 33
    public function __construct($className, $typeName, array $parameterValues = array())
45
    {
46 33
        parent::__construct($typeName, $parameterValues);
47
48 32
        $this->className = $className;
49 32
    }
50
51
    /**
52
     * Returns the name of the bound class.
53
     *
54
     * @return string The fully-qualified class name.
55
     */
56 1
    public function getClassName()
57
    {
58 1
        return $this->className;
59
    }
60
61
    /**
62
     * {@inheritdoc}
63
     */
64
    public function equals(Binding $other)
65
    {
66
        if (!parent::equals($other)) {
67
            return false;
68
        }
69
70
        /* @var ClassBinding $other */
71
        return $this->className === $other->className;
72
    }
73
74
    /**
75
     * {@inheritdoc}
76
     */
77 14
    protected function preSerialize(array &$data)
78
    {
79 14
        parent::preSerialize($data);
80
81 14
        $data[] = $this->className;
82 14
    }
83
84
    /**
85
     * {@inheritdoc}
86
     */
87 8
    protected function postUnserialize(array &$data)
88
    {
89 8
        $this->className = array_pop($data);
90
91 8
        parent::postUnserialize($data);
92 8
    }
93
}
94