Completed
Push — master ( 747a6a...c6c655 )
by Ítalo
02:55
created

Set::removeAll()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 3
Bugs 3 Features 0
Metric Value
c 3
b 3
f 0
dl 0
loc 10
ccs 0
cts 6
cp 0
rs 9.4285
cc 2
eloc 5
nc 1
nop 1
crap 6
1
<?php
2
3
namespace Collections;
4
5
use Collections\Iterator\SetIterator;
6
use Collections\Traits\SetLikeTrait;
7
8
/**
9
 * Set is an ordered set-style collection.
10
 *
11
 * Like all objects in PHP, Sets have reference-like semantics. When a caller
12
 * passes a Set to a callee, the callee can modify the Set and the caller will
13
 * see the changes. Sets do not have "copy-on-write" semantics.
14
 *
15
 * Sets preserve insertion order of the elements. When iterating over a Set,
16
 * the elements appear in the order they were inserted. Also, Sets do not
17
 * automagically convert integer-like strings (ex. "123") into integers.
18
 *
19
 * Sets only support integer values and string values. If a value of a
20
 * different type is used, an exception will be thrown.
21
 *
22
 * In general, Sets do not support "$c[$k]" style syntax. Adding an element
23
 * using "$c[] = .." syntax is supported.
24
 *
25
 * Set do not support iteration while elements are being added or removed.
26
 * When an element is added or removed, all iterators that point to the Set
27
 * shall be considered invalid.
28
 *
29
 * Sets do not support taking elements by reference. If binding assignment (=&)
30
 * is used when adding a new element to a Set (ex. "$c[] =& ..."), or if a Set
31
 * is used with foreach by reference, an exception will be thrown.
32
 */
33
class Set implements SetInterface, \ArrayAccess
34
{
35
    use SetLikeTrait;
36
37
    public function __construct($array = null)
38
    {
39
        $this->init($array);
40
    }
41
42
    /**
43
     * @inheritDoc
44
     */
45
    public function getIterator()
46
    {
47
        return new SetIterator($this->container);
48
    }
49
}
50