dashifen / collection
一个抽象对象,可以从它构建具体的集合。
3.0.0
2023-09-02 17:16 UTC
Requires
- php: >=8.2
- dashifen/exception: ^1.2
README
一个抽象对象,可以从它构建具体的集合。
安装
composer require dashifen/collection
使用方法
其中包含一个抽象类 AbstractCollection
,该类实现了 CollectionInterface
接口。该接口同时扩展了 Iterator
和 ArrayAccess
,其方法由 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; } }