malarzm / collections
Doctrine Collection 接口的多种实现
Requires
- php: >=5.4
- doctrine/collections: ~1.1
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-09-12 03:41:07 UTC
README
Doctrine Collection 接口的多种实现,允许您启动自己的开发。每次接口或抽象类需要您实现 compare
方法时,它都需要一个标准的 PHP 比较函数,该函数返回一个整数,小于、等于或大于零,如果第一个参数被认为分别小于、等于或大于第二个参数。
此库具有以下特点:
SortedCollection
确保始终排序的集合,默认使用 uasort
,但可以通过构造函数参数进行更改。示例用法
class SortedCollection extends Malarzm\Collections\SortedCollection { public function compare($a, $b) { // ... } } $coll = new SortedIntCollection([], 'usort');
ObjectSet
确保在任何时候只包含给定对象的单个实例的集合,从而提供非常高效的 contains
实现。如果对象已在集合中,则添加/设置调用为 NOP。
可直接使用。
Set
比 ObjectSet
更通用的版本,它基于自定义比较函数而不是对象哈希,实际上允许您存储任何类型的值。如果值已在集合中,则添加/设置调用为 NOP。
class Set extends Malarzm\Collections\Set { public function compare($a, $b) { // ... } }
Diffable
允许您跟踪在快照(第一个是在构造集合后立即进行的,接下来是在开发人员调用 ->snapshot()
时进行的)之间所做的更改的集合。使用 ->getAddedElements()
和 ->getRemovedElements()
分别获取新元素和不再存在的元素。
class Diffable extends Malarzm\Collections\Diffable { public function compare($a, $b) { // ... } }
该库还提供了 Malarzm\Collections\DiffableCollection
接口,它可以由 Malarzm\Collections\Mixin\Diffable
特性支持,以供您使用。
ListArray
确保存储的元素始终以列表(由连续数字索引的数组)的形式存储的集合。在尝试写入无效索引时抛出异常。
可直接使用。
SortedList
扩展了 ListArray
的实现,它还保持元素排序,从而提供更有效的 contains
、indexOf
和 removeElement
实现。
class SortedList extends Malarzm\Collections\SortedList { public function compare($a, $b) { // ... } }