ama-team / tree-access
类似Symfony-Property-Access的树操作助手
0.1.1
2018-01-11 12:30 UTC
Requires
- php: >= 5.6
Requires (Dev)
- allure-framework/allure-codeception: ^1.2
- codeception/codeception: ^2.3
- jakub-onderka/php-parallel-lint: ^0.9.2
- php-coveralls/php-coveralls: ^2.0
- phpmd/phpmd: ^2.6
- squizlabs/php_codesniffer: ^3.2
This package is not auto-updated.
Last update: 2024-09-14 03:18:45 UTC
README
这个小巧的项目允许读取、枚举和写入由数组和对象组成的嵌套树中的属性/元素。
它与symfony/property-access非常相似,但有两点区别
- 这个库以相同的方式处理数组元素和对象属性,提供统一的树访问。这可能既可取也可能不可取,具体取决于实际应用,因此属性访问可能对你更有用。
- 这个库允许枚举特定节点的属性。
安装
composer require ama-team/tree-access
用法
<?php $object = new stdClass(); $object->values = ['apples' => 'green']; $root = [$object]; $accessor = AmaTeam\TreeAccess\TreeAccess::createAccessor(); // 'green' $color = $accessor->read($root, '0.values.apples'); // List of AmaTeam\TreeAccess\API\NodeInterface $values = $accessor->enumerate($root, '0.values'); // NodeInterface that got updated $accessor->write($root, '0.values.melon', 'yellow'); // false $accessor->exists($root, '0.values.watermelon');
设置器/获取器支持已经内置,访问缺失的节点将抛出异常(除设置现有节点的叶子节点外)。
ActiveNode
访问器已提供额外的方法,允许替代的操纵接口
<?php $object = new stdClass(); $object->values = ['apples' => 'green']; $root = [$object]; $accessor = AmaTeam\TreeAccess\TreeAccess::createAccessor(); $activeNode = $accessor->wrap($object); foreach ($activeNode->enumerate() as $child) { $child->getChild('values')->setChild('lemon', 'yellow'); $child->setChild('processed', true); }
性能
截至0.1.x版本,为了使用方便,可能牺牲了一些性能优化。这个库(至少目前)完全不提倡性能。
贡献
请随意向 dev 分支发送PR
Dev分支状态
许可
MIT许可 / AMA Team, 2018