Completed
Push — master ( e86954...7cbcb1 )
by Ítalo
02:48
created

Stack   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 54.55%

Importance

Changes 4
Bugs 0 Features 1
Metric Value
wmc 10
c 4
b 0
f 1
lcom 0
cbo 1
dl 0
loc 67
ccs 12
cts 22
cp 0.5455
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __toString() 0 4 1
A jsonSerialize() 0 4 1
A pushMultiple() 0 8 2
A fromArray() 0 13 3
A toArray() 0 13 3
1
<?php
2
3
// Copyright (c) Lellys Informática. All rights reserved. See License.txt in the project root for license information.
4
namespace Collections;
5
6
use SplStack;
7
8
/**
9
 * Represents a simple last-in-first-out (LIFO) non-generic collection of objects.
10
 */
11
class Stack extends SplStack implements StackInterface, \JsonSerializable
12
{
13
    /**
14
     * Inserts multiples objects at the top of the Stack.
15
     * @param array $items The Objects to push onto the Stack. The value <b>can</b> be null.
16
     * @return $this|Stack
17
     */
18 1
    public function pushMultiple($items)
19
    {
20 1
        foreach ($items as $item) {
21 1
            $this->push($item);
22
        }
23
24 1
        return $this;
25
    }
26
27
    public static function fromArray(array $arr)
28
    {
29
        $collection = new Stack();
30
        foreach ($arr as $v) {
31
            if (is_array($v)) {
32
                $collection->push(static::fromArray($v));
33
            } else {
34
                $collection->push($v);
35
            }
36
        }
37
38
        return $collection;
39
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44 2
    public function toArray()
45
    {
46 2
        $array = array();
47 2
        foreach ($this as $key => $value) {
48 2
            if ($value instanceof CollectionConvertableInterface) {
49
                $array[$key] = $value->toArray();
50
            } else {
51 2
                $array[$key] = $value;
52
            }
53
        }
54
55 2
        return $array;
56
    }
57
58
    /**
59
     * {@inheritdoc}
60
     */
61 2
    public function __toString()
62
    {
63 2
        return get_class($this);
64
    }
65
66
    /**
67
     * (PHP 5 &gt;= 5.4.0)<br/>
68
     * Specify data which should be serialized to JSON
69
     * @link http://php.net/manual/en/jsonserializable.jsonserialize.php
70
     * @return mixed data which can be serialized by <b>json_encode</b>,
71
     * which is a value of any type other than a resource.
72
     */
73
    public function jsonSerialize()
74
    {
75
//        return $this->getIterator()->toArray();
76
    }
77
}
78