smoren/tree-tools
最新稳定版本:v1.0.0
Composer 安装命令:
composer require smoren/tree-tools
包简介
Iterator-based tree-tools
README 文档
README
Library for working with trees.
How to install to your project
composer require smoren/tree-tools
Quick reference
Tree Walker
| Reducer | Description | Code Snippet |
|---|---|---|
traverseDepthFirst |
Iterates a tree using depth-first search | TreeWalker::traverseDepthFirst($data, $childrenContainerKey) |
traverseBreadthFirst |
Iterates a tree using breadth-first search | TreeWalker::traverseBreadthFirst($data, $childrenContainerKey) |
Tree Builder
| Reducer | Description | Code Snippet |
|---|---|---|
build |
Builds a tree from given flat collection | TreeBuilder::build($collection, $idField, $parentIdField, $childrenContainerField, $itemContainerField) |
Usage
Tree Walker
Traverse Depth First
Iterates a tree like a flat collection using depth-first traversal.
TreeWalker::traverseDepthFirst(iterable $data, ?string $childrenContainerKey = null): Generator
If $childrenContainerKey is not null looks for children items using by this key only.
Otherwise, considers any subarray to contain children.
use Smoren\TreeTools\TreeWalker; $tree = [ [ 'id' => 1, 'children' => [ ['id' => 11], [ 'id' => 12, 'children' => [ ['id' => 121], ['id' => 122], ], ], ], ], [ 'id' => 2, 'children' => [ ['id' => 21], ], ], ['id' => 3], ]; $result = []; foreach(TreeWalker::traverseDepthFirst($tree) as $item) { $result[] = $item['id']; } var_dump($result); // [1, 11, 12, 121, 122, 2, 21, 3]
Traverse Breadth First
Iterates a tree like a flat collection using depth-breadth traversal.
TreeWalker::traverseBreadthFirst(iterable $data, ?string $childrenContainerKey = null): Generator
If $childrenContainerKey is not null looks for children items using by this key only.
Otherwise, considers any subarray to contain children.
use Smoren\TreeTools\TreeWalker; $tree = [ [ 'id' => 1, 'children' => [ ['id' => 11], [ 'id' => 12, 'children' => [ ['id' => 121], ['id' => 122], ], ], ], ], [ 'id' => 2, 'children' => [ ['id' => 21], ], ], ['id' => 3], ]; $result = []; foreach(TreeWalker::traverseBreadthFirst($tree) as $item) { $result[] = $item['id']; } var_dump($result); // [1, 2, 3, 11, 12, 21, 121, 122]
Tree Builder
Build
Builds a tree from given flat collection of items with relations.
TreeBuilder::build(
iterable $collection,
string $idField = 'id',
string $parentIdField = 'parent_id',
string $childrenContainerField = 'children',
string $itemContainerField = 'item'
): array
use Smoren\TreeTools\TreeBuilder; $input = [ ['id' => 1, 'name' => 'Item 1', 'parent_id' => null], ['id' => 2, 'name' => 'Item 1.1', 'parent_id' => 1], ['id' => 3, 'name' => 'Item 1.2', 'parent_id' => 1], ['id' => 4, 'name' => 'Item 1.1.1', 'parent_id' => 2], ['id' => 5, 'name' => 'Item 2', 'parent_id' => null], ['id' => 6, 'name' => 'Item 3', 'parent_id' => null], ['id' => 7, 'name' => 'Item 3.1', 'parent_id' => 6], ['id' => 8, 'name' => 'Item 3.2', 'parent_id' => 6], ]; $tree = TreeBuilder::build($input); print_r($tree); /* [ [ 'id' => 1, 'name' => 'Item 1', 'parent_id' => null, 'children' => [ [ 'id' => 2, 'name' => 'Item 1.1', 'parent_id' => 1, 'children' => [ [ 'id' => 4, 'name' => 'Item 1.1.1', 'parent_id' => 2, 'children' => [], ] ], ], [ 'id' => 3, 'name' => 'Item 1.2', 'parent_id' => 1, 'children' => [], ], ], ], [ 'id' => 5, 'name' => 'Item 2', 'parent_id' => null, 'children' => [], ], [ 'id' => 6, 'name' => 'Item 3', 'parent_id' => null, 'children' => [ [ 'id' => 7, 'name' => 'Item 3.1', 'parent_id' => 6, 'children' => [], ], [ 'id' => 8, 'name' => 'Item 3.2', 'parent_id' => 6, 'children' => [], ], ] ], ] */
Unit testing
composer install
composer test-init
composer test
License
Tree Tools PHP is licensed under the MIT License.
统计信息
- 总下载量: 182
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 7
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-01-10