graze / data-structure
Data collections and containers
Installs: 246 629
Dependents: 7
Suggesters: 0
Security: 0
Stars: 12
Watchers: 15
Forks: 2
Open Issues: 0
Requires
- php: >=5.5|^7.0
- graze/sort: ~2.0
Requires (Dev)
- graze/standards: ^2.0
- phpunit/phpunit: ^4.2 | ^5.2
- squizlabs/php_codesniffer: ^3
This package is auto-updated.
Last update: 2024-11-24 04:26:52 UTC
README
This library implements common data collections and containers in PHP.
Install
It can be installed in whichever way you prefer, but we recommend Composer.
$ composer require graze/data-structure
Usage
<?php use Graze\DataStructure\Collection\Collection; use Graze\DataStructure\Container\Container; use Graze\DataStructure\Container\FlatContainer; // Collection $collection = new Collection(['foo', 'bar']); $collection->add('baz'); $collection->contains('baz'); $collection->getAll(); $collection->filter(function ($item) {}); $collection->map(function ($item) {}); $collection->reduce(function ($res, $item) {}); $collection->sort(function ($itemA, $itemB) {}); $collection->sortOn(function ($item) {}); // Container $container = new Container(['foo' => 0, 'bar' => 1]); $container->add('baz', 2); $container->has('baz'); $container->forAll(function ($value, $key) {}); $container->get('baz'); $container->set('bam', 3); $container->remove('bam'); // FlatContainer $container = new FlatContainer(['foo' => 0, 'bar' => ['child' => 'arr'], 'baz' => new Container(['ack' => 'bar'])]); $container->has('bar.child'); $container->has('baz.ack'); $container->get('bar.child'); $container->get('baz.ack'); $container->set('bar.other', 'more'); $container->remove('baz.ack');
Immutable structures
<?php use Graze\DataStructure\Collection\ImmutableCollection; use Graze\DataStructure\Container\ImmutableContainer; use Graze\DataStructure\Container\ImmutableFlatContainer; // Immutable collection $collection = new ImmutableCollection(['foo', 'bar']); $collection = $collection->add('baz'); $collection = $collection->filter(function ($item) {}); $collection = $collection->sort(function ($itemA, $itemB) {}); $collection = $collection->sortOn(function ($item) {}); // Immutable container $container = new ImmutableContainer(['foo' => 0, 'bar' => 1]); $container = $container->add('baz', 2); $container = $container->set('bam', 3); $container = $container->remove('bam'); // Immutable flat container $container = new ImmutableFlatContainer(['foo' => 0, 'bar' => ['child' => 'arr'], 'baz' => new ImmutableContainer(['ack' => 'bar'])]); $container = $container->add('a.new.array', 'more'); $container = $container->set('bar.other', 'more'); $container = $container->remove('baz.ack');
Contributing
Contributions are accepted via Pull Request, but passing unit tests must be included before it will be considered for merge.
$ make
$ make test
License
The content of this library is released under the MIT License by
Nature Delivered Ltd.
You can find a copy of this license at
http://www.opensource.org/licenses/mit or in LICENSE
.