dashifen/collection

一个抽象对象,可以从它构建具体的集合。

安装次数: 4,112

依赖项: 1

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:项目

3.0.0 2023-09-02 17:16 UTC

This package is auto-updated.

Last update: 2024-08-31 00:33:21 UTC


README

一个抽象对象,可以从它构建具体的集合。

安装

composer require dashifen/collection

使用方法

其中包含一个抽象类 AbstractCollection,该类实现了 CollectionInterface 接口。该接口同时扩展了 IteratorArrayAccess,其方法由 AbstractCollection 实现。因此,通过扩展此对象以满足您的需求,您可以创建自己的集合,该集合在 foreach 循环中表现得像数组,并且可以使用 [] 运算符访问。

示例

尽管 AbstractCollection 对象实现了其接口的所有方法,但为了对参数和返回值进行类型提示,可能有必要重写其中一些方法。在以下示例中,我们假设已经定义了一个 Movie 对象,并且我们的电影集合中的索引是它们的标题,即该集合是一个关联数组。

class MovieCollection implements AbstractCollection 
{
    public function current(): Movie 
    {
        return current($this->collection);
    }

    public function key(): ?string 
    {
        return key($this->collection);
    }

    public function valid(): bool 
    {
        return is_string($this->key());
    }

    public function offsetGet ($offset): ?Movie
    {
        return $this->collection[$offset] ?? null;
    }

    public function offsetSet ($offset, $value): void
    {
        if (!($value instanceof Movie)) {
            throw new Exception('Collection value must be a Movie');
        }

        $this->collection[$offset] = $value;
    }
}