zoukankan      html  css  js  c++  java
  • 迭代器模式

    定义:在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素
    好处:相比于传统的编程模式,迭代器模式可以隐藏遍历元素的所需的操作

    $users = new IMoocAllUser();
    foreach ($users as $user)
    {
    var_dump($user);
    }

    <?php
    namespace IMooc;

    class AllUser implements Iterator
    {
    protected $ids;
    protected $data = array();
    protected $index;

    function __construct()
    {
    $db = new IMoocDatabaseMySQLi();
    $db->connect('127.0.0.1', 'root', 'root','test');
    $result = $db->query("select id from user");
    $this->ids = $result->fetch_all(MYSQLI_ASSOC);
    }
    //返回当前的数据
    function current()
    {
    $id = $this->ids[$this->index]['id'];
    return Factory::getUser($id);
    }

    //将索引值向下移动
    function next()
    {
    $this->index ++;
    }

    //查询当前是否有数据
    function valid()
    {
    return $this->index < count($this->ids);
    }

    //将迭代器移动到集合的开头
    function rewind()
    {
    $this->index = 0;
    }

    //返回当前key
    function key()
    {
    return $this->index;
    }
    }

    <?php
    namespace IMooc;

    class Factory
    {
    static function getUser($id)
    {
    $key = 'user_'.$id;
    $user = Register::get($key);
    if (!$user)
    {
    $user = new User($id);
    Register::set($key, $user);
    }
    return $user;
    }
    }




  • 相关阅读:
    python实现Socket通信原理
    SSL加密原理
    HackTheBox实战
    wireshark实战应用(长期更新,工作随笔)
    DNS域传输漏洞复现
    网站开发语言判断
    Linux:Day39(上) mysql基础
    Linux:Day38(下)
    Linux:Day38(上)
    Linux:Day37(上)
  • 原文地址:https://www.cnblogs.com/phonecom/p/cc5902329c5cee3164670b128291264f.html
Copyright © 2011-2022 走看看