Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
<?php
/*
< * Copyright 2017 MongoDB, Inc.
> * Copyright 2017-present MongoDB, Inc.
* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *
< * http://www.apache.org/licenses/LICENSE-2.0
> * https://www.apache.org/licenses/LICENSE-2.0
* * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace MongoDB\Model; use Closure; use Iterator; use IteratorIterator;
> use ReturnTypeWillChange;
use Traversable; /** * Iterator to apply a callback before returning an element * * @internal */ class CallbackIterator implements Iterator { /** @var Closure */ private $callback;
< /** @var IteratorIterator */
> /** @var Iterator */
private $iterator; public function __construct(Traversable $traversable, Closure $callback) {
< $this->iterator = new IteratorIterator($traversable);
> $this->iterator = $traversable instanceof Iterator ? $traversable : new IteratorIterator($traversable);
$this->callback = $callback; } /**
< * @see http://php.net/iterator.current
> * @see https://php.net/iterator.current
* @return mixed */
> #[ReturnTypeWillChange]
public function current() { return ($this->callback)($this->iterator->current()); } /**
< * @see http://php.net/iterator.key
> * @see https://php.net/iterator.key
* @return mixed */
> #[ReturnTypeWillChange]
public function key() { return $this->iterator->key(); } /**
< * @see http://php.net/iterator.next < * @return void
> * @see https://php.net/iterator.next
*/
< public function next()
> public function next(): void
{ $this->iterator->next(); } /**
< * @see http://php.net/iterator.rewind < * @return void
> * @see https://php.net/iterator.rewind
*/
< public function rewind()
> public function rewind(): void
{ $this->iterator->rewind(); } /**
< * @see http://php.net/iterator.valid < * @return boolean
> * @see https://php.net/iterator.valid
*/
< public function valid()
> public function valid(): bool
{ return $this->iterator->valid(); } }