konfirm / collection
统一集合(类似数组)操作
1.2.0
2018-01-28 20:37 UTC
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: 6.2
This package is auto-updated.
Last update: 2024-09-12 19:47:59 UTC
README
简单实现常见的数组操作,具有类似于 ECMA/Javascript 实现的统一参数列表的 filter、map 和 reduce
示例用法
唯一
删除所有重复条目
<?php use Konfirm\Collection\Provider; $provider = new Provider('a', 'b', 'c', 'b', 'a'); $unique = $provider->unique(); // 'a', 'b', 'c'
交集
创建一个新的 Provider,包含两个 Provider 中都存在的元素
<?php use Konfirm\Collection\Provider; $first = new Provider('a', 'b', 'c', 'b', 'a'); $second = new Provider('foo', 'bar', 'c', 'b'); $common = $first->intersect($second); // 'b', 'c', 'b';
过滤
<?php use Konfirm\Collection\Provider; $provider = new Provider('a', 'b', 'c', 'b', 'a'); $filtered = $provider->filter(function($value, $index /*, $provider*/) { return $value !== 'a' && $index % 2 === 0; }); // 'c'
映射
<?php use Konfirm\Collection\Provider; $provider = new Provider('a', 'b', 'c', 'b', 'a'); $mapped = $provider->map(function($value /*, $index, $provider*/) { return sprintf('*%s*'); }); // '*a*', '*b*', '*c*', '*b*', '*a*'
归约
支持未初始化的(使用 Provider 的第一个项目)和初始化的(提供初始值)归约
未初始化
<?php use Konfirm\Collection\Provider; $provider = new Provider('a', 'b', 'c'); $reduce = $provider->map(function($carry, $value, $index) { return $carry + $value; }); // 'abc'
初始化
<?php use Konfirm\Collection\Provider; $provider = new Provider('a', 'b', 'c'); $reduce = $provider->map(function($carry, $value, $index) { return $carry + $value; }, 'my result: '); // 'my result: abc'
比较对象
如果需要根据(属性子集)比较对象,可以实现 Konfirm\Collection\Comparable
接口,该接口指定了 getComparison
方法,如果(且仅当)两个对象都实现该接口且对象不相同(===
)时使用该方法
特性
- PSR-4 自动加载兼容结构
- 使用 PHPUnit 实现完全代码覆盖率