Рубрики
Uncategorized

Предопределенный интерфейс PHP — пример использования итератора

Автор оригинала: David Wong.

В этой статье описывается использование итератора , предопределенного интерфейса PHP. Для вашей справки приведем следующие сведения:

Интерфейс итератора

Вы можете выполнить внутреннюю итерацию своего собственного внешнего итератора или интерфейса класса.

Краткое описание интерфейса

Iterator extends Traversable {
    /*Methods*/
    abstract public current ( void ) : mixed
    abstract public key ( void ) : scalar
    abstract public next ( void ) : void
    abstract public rewind ( void ) : void
    abstract public valid ( void ) : bool
}

Например:

php
class myIterator implements Iterator
{
  private $position = 0;
  private $array = array(
    'first_element',
    'second_element',
    'last_element',
  );

  /**
   *Reset the position of the key
   */
  public function rewind(): void
  {
    var_dump(__METHOD__);
    $this->position = 0;
  }

  /**
   *Returns the current element
   */
  public function current()
  {
    var_dump(__METHOD__);
    return $this->array[$this->position];
  }

  /**
   *Returns the current element的键
   * @return int
   */
  public function key(): int
  {
    var_dump(__METHOD__);
    return $this->position;
  }

  /**
   *Move the key to the next position
   */
  public function next(): void
  {
    var_dump(__METHOD__);
    ++$this->position;
  }

  /**
   *Determine whether the element where the key is located exists
   * @return bool
   */
  public function valid(): bool
  {
    var_dump(__METHOD__);
    return isset($this->array[$this->position]);
  }
}

$it = new myIterator;

foreach ($it as $key => $value) {
  var_dump($key, $value);
  echo "\n";
}

Выходные результаты:

строка ‘myIterator::перемотка назад’) строка ‘myIterator::действительна’) строка ‘myIterator::текущая’) строка ‘myIterator::ключ’) int 0 строка ‘first_element’) строка ‘myIterator::следующая’) строка ‘myIterator::действительна’) строка ‘myIterator::текущая’) строка ‘myIterator::ключ’) int 1 строка ‘second_element’) строка ‘myIterator::следующая’) строка ‘myIterator::действительна’) строка ‘myIterator::текущий’) строка ‘myIterator::ключ’) int 2 строка ‘last_element’) строка ‘myIterator::следующий’) строка ‘myIterator::действительный’)

Результаты показывают, что когда класс реализует интерфейс итератора и реализует набор данных экземпляра класса, сначала будет сброшен ключ набора данных, а затем он будет постепенно перемещен обратно. Каждый раз будет возвращен текущий элемент и текущий ключ.

Подробнее о содержании, связанном с PHP заинтересованные читатели могут ознакомиться с этой темой сайта: “Вводный учебник по объектно-ориентированному программированию PHP”, “Навыки работы с массивом PHP (массив)”, “Вводный курс по основному синтаксису PHP”, “Краткое описание операций и использования операторов PHP”, “Краткое описание использования символьной строки (строки) PHP”, “Руководство по вводу в эксплуатацию базы данных PHP + MySQL” и “Общая работа с базой данных PHP” Краткое описание навыков написания

Я надеюсь, что эта статья поможет вам в программировании на PHP.