⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

深入SPL:用IteratorAggregate构建可遍历对象图谱

超越foreach基础,学习如何通过实现IteratorAggregate接口让自定义类像数组一样遍历,并结合Generator玩转惰性迭代器。 · 难度:入门 · +10XP

深入SPL:用IteratorAggregate构建可遍历对象图谱

大多数PHP开发者会在简单循环中使用数组,但面对复杂业务对象时,你需要更优雅的遍历方式。SPL中的IteratorAggregate接口允许你定义对象的内部迭代器,配合getIterator方法返回一个Traversable对象。结合yield关键字,你可以创建惰性求值的迭代器,在遍历大数据集时节省内存。本教程将展示如何将多个实体聚合到一个可迭代的集合中,并利用递归迭代器实现树形结构的深度优先遍历。

class UserCollection implements \IteratorAggregate {
    private array $users = [];
    public function addUser(User $user): void {
        $this->users[] = $user;
    }
    public function getIterator(): \Traversable {
        foreach ($this->users as $user) {
            yield $user;
        }
    }
}
$collection = new UserCollection();
$collection->addUser(new User('Alice'));
foreach ($collection as $user) {
    echo $user->getName();
}
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 90 篇
0 完成
🔥 0