Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.

Differences Between: [Versions 311 and 401]

   1  <?php
   2  /*
   3   * Copyright 2017 MongoDB, Inc.
   4   *
   5   * Licensed under the Apache License, Version 2.0 (the "License");
   6   * you may not use this file except in compliance with the License.
   7   * You may obtain a copy of the License at
   8   *
   9   *   http://www.apache.org/licenses/LICENSE-2.0
  10   *
  11   * Unless required by applicable law or agreed to in writing, software
  12   * distributed under the License is distributed on an "AS IS" BASIS,
  13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14   * See the License for the specific language governing permissions and
  15   * limitations under the License.
  16   */
  17  
  18  namespace MongoDB\Model;
  19  
  20  use Closure;
  21  use Iterator;
  22  use IteratorIterator;
  23  use Traversable;
  24  
  25  /**
  26   * Iterator to apply a callback before returning an element
  27   *
  28   * @internal
  29   */
  30  class CallbackIterator implements Iterator
  31  {
  32      /** @var Closure */
  33      private $callback;
  34  
  35      /** @var IteratorIterator */
  36      private $iterator;
  37  
  38      public function __construct(Traversable $traversable, Closure $callback)
  39      {
  40          $this->iterator = new IteratorIterator($traversable);
  41          $this->callback = $callback;
  42      }
  43  
  44      /**
  45       * @see http://php.net/iterator.current
  46       * @return mixed
  47       */
  48      public function current()
  49      {
  50          return ($this->callback)($this->iterator->current());
  51      }
  52  
  53      /**
  54       * @see http://php.net/iterator.key
  55       * @return mixed
  56       */
  57      public function key()
  58      {
  59          return $this->iterator->key();
  60      }
  61  
  62      /**
  63       * @see http://php.net/iterator.next
  64       * @return void
  65       */
  66      public function next()
  67      {
  68          $this->iterator->next();
  69      }
  70  
  71      /**
  72       * @see http://php.net/iterator.rewind
  73       * @return void
  74       */
  75      public function rewind()
  76      {
  77          $this->iterator->rewind();
  78      }
  79  
  80      /**
  81       * @see http://php.net/iterator.valid
  82       * @return boolean
  83       */
  84      public function valid()
  85      {
  86          return $this->iterator->valid();
  87      }
  88  }