Home >Backend Development >PHP Tutorial >Detailed explanation of the iterator pattern of PHP design patterns

Detailed explanation of the iterator pattern of PHP design patterns

韦小宝
韦小宝Original
2017-11-15 10:36:411891browse

Iterator modeTraverses the internal elements of an aggregate object without knowing the internals. Compared with the traditional programming mode, Iterator mode can hide the elements of the traversed All operations

Detailed explanation of the iterator pattern of PHP design patterns

<?php

/*
 * 迭代器模式
 */
class All implements \Iterator
{
    protected $ids;
    protected $index;

    public function __construct($data)
    {
        $this->ids = $data;
    }

    public function current() //获取当前的元素
    {
        return $this->ids[$this->index];
    }

    public function next() //获取下一个元素
    {
        $this->index++;
    }

    public function valid() //验证当下是否还有下一个元素
    {
        return $this->index < count($this->ids);
    }

    public function rewind() //重置迭代器指针
    {
        $this->index = 0;
    }

    public function key() //迭代器指针的位置
    {
        return $this->index;
    }
}

$arr = [&#39;1&#39;, &#39;2&#39;, &#39;4&#39;]; //客户端
$users = new All($arr);
foreach ($users as $user) {
    var_dump($user);
}

The iterator pattern is a very frequently used design pattern. By introducing iterators, the data traversal function can be separated from the aggregate object, and the aggregation The object is only responsible for storing data, and traversing the data is completed by iterators

Related recommendations:

StarCraft php iterator pattern

PHP variable reference PHP iterator pattern (reference SPL implementation)

php design pattern observer pattern Detailed explanation

The above is the detailed content of Detailed explanation of the iterator pattern of PHP design patterns. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn