17
17
18
18
namespace MongoDB \Model ;
19
19
20
- use Closure ;
21
20
use Iterator ;
22
21
use IteratorIterator ;
23
22
use ReturnTypeWillChange ;
24
23
use Traversable ;
25
24
25
+ use function call_user_func ;
26
+
26
27
/**
27
28
* Iterator to apply a callback before returning an element
28
29
*
35
36
*/
36
37
class CallbackIterator implements Iterator
37
38
{
38
- /** @var Closure (TValue, TKey): TCallbackValue */
39
- private $ callback ;
39
+ /** @var callable (TValue, TKey): TCallbackValue */
40
+ private $ callable ;
40
41
41
42
/** @var Iterator<TKey, TValue> */
42
43
private $ iterator ;
43
44
44
45
/**
45
- * @param Traversable<TKey, TValue> $traversable
46
- * @param Closure (TValue, TKey): TCallbackValue $callback
46
+ * @param Traversable<TKey, TValue> $traversable
47
+ * @param callable (TValue, TKey): TCallbackValue $callable
47
48
*/
48
- public function __construct (Traversable $ traversable , Closure $ callback )
49
+ public function __construct (Traversable $ traversable , callable $ callable )
49
50
{
50
51
$ this ->iterator = $ traversable instanceof Iterator ? $ traversable : new IteratorIterator ($ traversable );
51
- $ this ->callback = $ callback ;
52
+ $ this ->callable = $ callable ;
52
53
}
53
54
54
55
/**
@@ -58,7 +59,7 @@ public function __construct(Traversable $traversable, Closure $callback)
58
59
#[ReturnTypeWillChange]
59
60
public function current ()
60
61
{
61
- return ($ this ->callback )( $ this ->iterator ->current (), $ this ->iterator ->key ());
62
+ return call_user_func ($ this ->callable , $ this ->iterator ->current (), $ this ->iterator ->key ());
62
63
}
63
64
64
65
/**
0 commit comments