继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

万万的小刀
关注TA
已关注
手记 21
粉丝 1
获赞 1

课程名称:大话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);
}

课程截图

图片描述
图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP