MediaWiki
REL1_34
MappedIterator.php
Go to the documentation of this file.
1
<?php
28
class
MappedIterator
extends
FilterIterator {
30
protected
$vCallback
;
32
protected
$aCallback
;
34
protected
$cache
= [];
35
36
protected
$rewound
=
false
;
// boolean; whether rewind() has been called
37
54
public
function
__construct
( $iter,
$vCallback
, array $options = [] ) {
55
if
( is_array( $iter ) ) {
56
$baseIterator =
new
ArrayIterator( $iter );
57
} elseif ( $iter instanceof Iterator ) {
58
$baseIterator = $iter;
59
}
else
{
60
throw
new
UnexpectedValueException(
"Invalid base iterator provided."
);
61
}
62
parent::__construct( $baseIterator );
63
$this->vCallback =
$vCallback
;
64
$this->aCallback = $options[
'accept'
] ??
null
;
65
}
66
67
public
function
next
() {
68
$this->cache = [];
69
parent::next();
70
}
71
72
public
function
rewind
() {
73
$this->rewound =
true
;
74
$this->cache = [];
75
parent::rewind();
76
}
77
78
public
function
accept
() {
79
$value = call_user_func( $this->vCallback, $this->getInnerIterator()->
current
() );
80
$ok = (
$this->aCallback
) ? call_user_func( $this->aCallback, $value ) :
true
;
81
if
( $ok ) {
82
$this->cache[
'current'
] = $value;
83
}
84
85
return
$ok;
86
}
87
88
public
function
key
() {
89
$this->
init
();
90
91
return
parent::key();
92
}
93
94
public
function
valid
() {
95
$this->
init
();
96
97
return
parent::valid();
98
}
99
100
public
function
current
() {
101
$this->
init
();
102
if
( parent::valid() ) {
103
return
$this->cache[
'current'
];
104
}
else
{
105
return
null
;
// out of range
106
}
107
}
108
112
protected
function
init
() {
113
if
( !$this->rewound ) {
114
$this->
rewind
();
115
}
116
}
117
}
MappedIterator
Convenience class for generating iterators from iterators.
Definition
MappedIterator.php:28
MappedIterator\key
key()
Definition
MappedIterator.php:88
MappedIterator\$aCallback
callable $aCallback
Definition
MappedIterator.php:32
MappedIterator\accept
accept()
Definition
MappedIterator.php:78
MappedIterator\__construct
__construct( $iter, $vCallback, array $options=[])
Build an new iterator from a base iterator by having the former wrap the later, returning the result ...
Definition
MappedIterator.php:54
MappedIterator\current
current()
Definition
MappedIterator.php:100
MappedIterator\valid
valid()
Definition
MappedIterator.php:94
MappedIterator\init
init()
Obviate the usual need for rewind() before using a FilterIterator in a manual loop.
Definition
MappedIterator.php:112
MappedIterator\$rewound
$rewound
Definition
MappedIterator.php:36
MappedIterator\$cache
array $cache
Definition
MappedIterator.php:34
MappedIterator\next
next()
Definition
MappedIterator.php:67
MappedIterator\rewind
rewind()
Definition
MappedIterator.php:72
MappedIterator\$vCallback
callable $vCallback
Definition
MappedIterator.php:30
includes
libs
MappedIterator.php
Generated on Mon Nov 25 2024 16:05:19 for MediaWiki by
1.10.0