为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第11天--大话PHP设计模式第十二章节迭代器模式

标签:
PHP

课程名称:大话PHP设计模式

课程章节: 12-1PHP迭代器模式
课程链接

主讲老师:Rango

课程内容

给出了迭代器模式的定义,然后通过代码演示让我们更加深入了解到迭代器模式的实现原理,主要是实现Iterator接口。

课程收获

定义

迭代器(Iterator)模式,它在一个很常见的过程上提供了一个抽象:位于对象图不明部分的一组对象(或标量)集合上的迭代。

迭代有几种不同的具体执行方法:在数组属性,集合对象,数组,甚至一个查询结果集之上迭代。

在对象的世界里,迭代器模式要维持类似数组的功能,看作是一个非侵入性对象刻面(facet),Client类往往分离自真实对象实现,指iterator接口。只要有可能,我们可以给迭代器传送一个引用,代替将来可能发生变化的具体或抽象类。

优势

相比于传统的编程模式,迭代器可以隐藏遍历元素的所需的操作

代码实现

class AllUser implements \Iterator
{
    protected $ids;
    protected $data = [];
    protected $index;

    function __construct()
    {
        $db = Factory::getDatabase();
        $result = $db->query("select ud from user");
        $this->id = $result->fetch_all(MYSQLI_ASSOC); 
    }

    function current()
    {
        $id = $this->ids[$this->index]['id'];
        return Factory::getUser($id);
    }

    function next(): void
    {
        $this->index ++;
    }

    function valid(): bool
    {
        return $this->index < count($this->ids);
    }

    
    function rewind(): void
    {
        $this->index = 0;
    }

    function key(): mixed
    {
        return $this->index;
    }
}

$users = new AllUser;

foreach ($users as $user) {
    $user->serial_no = rand(1000,9000);
}

课程截图

图片描述
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消