graze / data-structure
数据集合和容器
2.1.0
2017-11-29 09:06 UTC
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-08-24 03:48:36 UTC
README
此库实现了PHP中的常见数据集合和容器。
安装
您可以选择任何您喜欢的安装方式,但我们推荐使用 Composer。
$ composer require graze/data-structure
使用方法
<?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');
不可变结构
<?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');
贡献
贡献可以通过Pull Request接受,但必须包括通过单元测试,才能考虑合并。
$ make
$ make test
许可
此库的内容由 Nature Delivered Ltd 根据 MIT 许可证 发布。
您可以在 https://open-source.org.cn/licenses/mit 或 LICENSE
中找到此许可证的副本。