Completed
Push — 2.x-dev ( 5f5b4d...48a1b4 )
by Doug
61:10 queued 51:42
created

PackedItem::toOrientatedItem()   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 0
Metric Value
c 0
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
 * Box packing (3D bin packing, knapsack problem).
4
 *
5
 * @author Doug Wright
6
 */
7
8
namespace DVDoug\BoxPacker;
9
10
/**
11
 * A packed item.
12
 *
13
 * @author Doug Wright
14
 */
15
class PackedItem
16
{
17
    /**
18
     * @var int
19
     */
20
    protected $x;
21
22
    /**
23
     * @var int
24
     */
25
    protected $y;
26
27
    /**
28
     * @var int
29
     */
30
    protected $z;
31
32
    /**
33
     * @var Item
34
     */
35
    protected $item;
36
37
    /**
38
     * @var int
39
     */
40
    protected $width;
41
42
    /**
43
     * @var int
44
     */
45
    protected $length;
46
47
    /**
48
     * @var int
49
     */
50
    protected $depth;
51
52
    /**
53
     * PackedItem constructor.
54
     *
55
     * @param Item $item
56
     * @param int  $x
57
     * @param int  $y
58
     * @param int  $z
59
     * @param int  $width
60
     * @param int  $length
61
     * @param int  $depth
62
     */
63 20
    public function __construct(Item $item, $x, $y, $z, $width, $length, $depth)
64
    {
65 20
        $this->item = $item;
66 20
        $this->x = $x;
67 20
        $this->y = $y;
68 20
        $this->z = $z;
69 20
        $this->width = $width;
70 20
        $this->length = $length;
71 20
        $this->depth = $depth;
72 20
    }
73
74
    /**
75
     * @return int
76
     */
77 20
    public function getX()
78
    {
79 20
        return $this->x;
80
    }
81
82
    /**
83
     * @return int
84
     */
85 20
    public function getY()
86
    {
87 20
        return $this->y;
88
    }
89
90
    /**
91
     * @return int
92
     */
93 20
    public function getZ()
94
    {
95 20
        return $this->z;
96
    }
97
98
    /**
99
     * @return Item
100
     */
101 20
    public function getItem()
102
    {
103 20
        return $this->item;
104
    }
105
106
    /**
107
     * @return int
108
     */
109 20
    public function getWidth()
110
    {
111 20
        return $this->width;
112
    }
113
114
    /**
115
     * @return int
116
     */
117 20
    public function getLength()
118
    {
119 20
        return $this->length;
120
    }
121
122
    /**
123
     * @return int
124
     */
125 20
    public function getDepth()
126
    {
127 20
        return $this->depth;
128
    }
129
130
    /**
131
     * @param OrientatedItem $orientatedItem
132
     * @param int            $x
133
     * @param int            $y
134
     * @param int            $z
135
     *
136
     * @return PackedItem
137
     */
138 20
    public static function fromOrientatedItem(OrientatedItem $orientatedItem, $x, $y, $z)
139
    {
140 20
        return new static(
141 20
            $orientatedItem->getItem(),
142 20
            $x,
143 20
            $y,
144 20
            $z,
145 20
            $orientatedItem->getWidth(),
146 20
            $orientatedItem->getLength(),
147 20
            $orientatedItem->getDepth()
148
        );
149
    }
150
151
    /**
152
     * @return OrientatedItem
153
     */
154 18
    public function toOrientatedItem()
155
    {
156 18
        return new OrientatedItem($this->item, $this->width, $this->length, $this->depth);
157
    }
158
}
159