jcstrandburg/demeter
Composer 安装命令:
composer require jcstrandburg/demeter
包简介
Colllection library
README 文档
README
This library provides a set of immutable collection classes that allow for an consistent, object oriented, fluent style of manipulating data collections. It is mainly inspired by LINQ from C# and the Java Stream API.
Installing
composer require jcstrandburg\demeter
Usage
Vanilla PHP:
$x = array_slice( array_map( function ($x) {return $x * 2;}, array_filter([1, 2, 3, 4, 5], function ($x) {return $x % 2 == 1;})), 0, 2);
With Demeter:
use function Jcstrandburg\Demeter\sequence; use Jcstrandburg\Demeter\Lambda; $x = sequence([1, 2, 3, 4, 5]) ->filter(Lambda::isOdd()) ->map(Lambda::multiplyBy(2)) ->take(2);
Features
Version History
Unreleased
0.8
Added
Extensionsstatic class for extension method support
0.7
Changes
- All collection classes now implement
IteratorAggregateinstead of extendingIteratorIterator GroupedCollection::getGroupKeysnow returns aCollectioninstead of an array- It is now possible to safely perform concurrent iterations over the same
Sequenceor derivations thereof.
For example, if $x = sequence([1,2,3,4]);
Before: $x->zip($x->map(Lambda::plus(1)), Lambda::add())->toArray() == [3,6]
Now: $x->zip($x->map(Lambda::plus(1)), Lambda::add())->toArray() == [3,5,7,9]
Removed
LazyRewindableIteratorhas been replaced with an internal implementation
Added
as_iteratorutility function
Deprecated
as_traversable- useas_iteratorinstead
0.6
Fixed
- Call the parent constructor from
ArrayGroupedCollection
Changed
- Breaking: Convert
GroupedCollectionto an interface, with the existing implementation becomingArrayGroupedCollection - Breaking: Convert
Groupingto an interface, with the existing implementation becomingArrayGrouping - Make
CollectionextendCountable xrangenow returns aSequence
Added
Lambda::constantLambda::toArrayLambda::getGroupKeySequence::zipSequence::chunkSequence::joinSequence::implode
0.5
Changed
- Breaking: Changed the behavior of
HashSetso that it acts like a proper set (hashing is used for buckets but not equality comparisons) - Breaking: Convert
Sequenceto an interface, with the existing implementation becomingLazySequence - Breaking: Convert
Collectionto an interface, with the existing implementation becomingArrayCollection - Breaking: Convert
Dictionaryto an interface, with the existing implementation becomingArrayDictionary - Breaking: Functions previously returning
HashSetnow returnSet
Added
- Introduce
Setinterface whichHashSetimplements Sequence::exceptandSequence::intersectLambdautility classdictionaryandsetfactory functions
0.4
Added
HashMap::addManyHashMap::removeManySequence::toDictionaryDictionary
0.3
Changed
sequenceandcollectnow will return their argument unmodified if is already of the correct type
Added
HashSetSequence::asSetSequence::firstSequence::firstOrNullSequence::lastSequence::lastOrNullSequence::singleSequence::singleOrNull
0.2
Added
Sequence::groupByGroupedCollectionGrouping
0.1
Added
SequenceCollection- Various utility functions
LazyRewindableIteratorMappedIteratorSkipWhileIteratorTakeWhileIterator
License
This project is licensed under the MIT License - see the LICENSE.md file for details
jcstrandburg/demeter 适用场景与选型建议
jcstrandburg/demeter 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11 次下载、GitHub Stars 达 1, 最近一次更新时间为 2018 年 08 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 jcstrandburg/demeter 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 jcstrandburg/demeter 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 11
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-08-19