byjoby/flatrr
Composer 安装命令:
composer require byjoby/flatrr
包简介
A library for working with multi-dimensional arrays through flattened keys
README 文档
README
What Flatrr does
Flatrr is a utility library for accessing arrays via flattened key names. So, for example, rather than using $arr['foo']['bar'] you could use $arr['foo.bar']. Mostly this is useful if you want to use string building to make the keys you're going to use to access an array.
It should be noted that because of the way arrays and references work, this is not going to work exactly the same way as a native array in all cases. There are actually countless tiny caveats, and with that in mind you should generally stick to using this library as it is documented. Using undocumented features is exceptionally unpredictable due to the nature of this tool, and things may work radically different under the hood in the future.
FlatArray
The main FlatArray class is very simple. It only implements \Array and \Iterator. With it you can make arrays, merge values into them, and retrieve parts of the array via flattened keys.
Constructing and getting values
// Instantiating FlatArrays can be done by passing them an array // Keys in the initial array will be unflattened, for example the following // yields a FlatArray containing ['foo'=>'bar','bar'=>['baz'=>'a','buz'=>'u']] $f = new \Flatrr\FlatArray([ 'foo' => 'bar', 'bar.baz' => 'a', 'bar.buz' => 'u' ]);
You can then access the values of the array like a normal array, through the get() method, or by flattened keys.
// All of the following are equal to 'a' $f['bar']['baz']; $f['bar.baz']; $f->get('bar.baz');
Setting values
Values can be set through either flattened keys or the set() method. Setting values like a normal multi-dimensional array won't work beyond the first layer, and it shouldn't be done.
// Both of these work $f['foo.bar'] = 'baz'; $f->set('foo.bar','baz'); // This does NOT work $f['foo']['bar'] = 'baz';
SelfReferencingFlatArray
SelfReferencingFlatArray is a class that does everything FlatArray does, but also allows strings within the array to reference other fields within the array, and include them as strings. For example:
$f = new \Flatrr\SelfReferencingFlatArray([ 'foo.bar' => 'baz', 'foo.baz' => '${foo.bar}' ]); // foo.baz will now always return the value of foo.bar // echoes 'baz' echo $f['foo.baz']; // You can also get the "raw" value of a field using get() // echoes '${foo.bar}' echo $f->get('foo.baz'); // Variables can also be used as part of other strings $f['a'] = 'foo.bar is: ${foo.bar}'; // echoes 'foo.bar is: baz' echo $f['a']; // Variables are resolved recursively $f['b'] = 'foo.baz is: ${foo.baz}'; // echoes 'foo.baz is: baz' echo $f['b'];
Config
Config does the same things as SelfReferencingFlatArray, but adds methods for reading INI, JSON, and YAML files. It also provides methods for extracting its contents as JSON and YAML.
byjoby/flatrr 适用场景与选型建议
byjoby/flatrr 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 7.5k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 08 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 byjoby/flatrr 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 byjoby/flatrr 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 7.5k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 18
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-08-17