Download the PHP package jcstrandburg/demeter without Composer
On this page you can find all versions of the php package jcstrandburg/demeter. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package demeter
Demeter
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:
With Demeter:
Features
Version History
Unreleased
0.8
Added
Extensions
static class for extension method support
0.7
Changes
- All collection classes now implement
IteratorAggregate
instead of extendingIteratorIterator
GroupedCollection::getGroupKeys
now returns aCollection
instead of an array- It is now possible to safely perform concurrent iterations over the same
Sequence
or 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
LazyRewindableIterator
has been replaced with an internal implementation
Added
as_iterator
utility function
Deprecated
as_traversable
- useas_iterator
instead
0.6
Fixed
- Call the parent constructor from
ArrayGroupedCollection
Changed
- Breaking: Convert
GroupedCollection
to an interface, with the existing implementation becomingArrayGroupedCollection
- Breaking: Convert
Grouping
to an interface, with the existing implementation becomingArrayGrouping
- Make
Collection
extendCountable
xrange
now returns aSequence
Added
Lambda::constant
Lambda::toArray
Lambda::getGroupKey
Sequence::zip
Sequence::chunk
Sequence::join
Sequence::implode
0.5
Changed
- Breaking: Changed the behavior of
HashSet
so that it acts like a proper set (hashing is used for buckets but not equality comparisons) - Breaking: Convert
Sequence
to an interface, with the existing implementation becomingLazySequence
- Breaking: Convert
Collection
to an interface, with the existing implementation becomingArrayCollection
- Breaking: Convert
Dictionary
to an interface, with the existing implementation becomingArrayDictionary
- Breaking: Functions previously returning
HashSet
now returnSet
Added
- Introduce
Set
interface whichHashSet
implements Sequence::except
andSequence::intersect
Lambda
utility classdictionary
andset
factory functions
0.4
Added
HashMap::addMany
HashMap::removeMany
Sequence::toDictionary
Dictionary
0.3
Changed
sequence
andcollect
now will return their argument unmodified if is already of the correct type
Added
HashSet
Sequence::asSet
Sequence::first
Sequence::firstOrNull
Sequence::last
Sequence::lastOrNull
Sequence::single
Sequence::singleOrNull
0.2
Added
Sequence::groupBy
GroupedCollection
Grouping
0.1
Added
Sequence
Collection
- Various utility functions
LazyRewindableIterator
MappedIterator
SkipWhileIterator
TakeWhileIterator
License
This project is licensed under the MIT License - see the LICENSE.md file for details