michaels / data-manager
用于嵌套数据的简单数据管理器,支持点表示法数组访问、可扩展性和容器互操作性。
v0.9.3
2017-03-08 22:12 UTC
Requires
- php: >=5.6.0
- container-interop/container-interop: 1.2.0
Requires (Dev)
- phpunit/phpunit: 5.7
- satooshi/php-coveralls: 1.*
Suggests
- symfony/yaml: If you are using the YAML decoder. ~2.7
This package is not auto-updated.
Last update: 2024-09-14 17:53:31 UTC
README
尽管它仍然可以使用,但应考虑它已被弃用。任何提出的PR都将无条件接受。如果您想拥有此仓库,请打开一个issue并联系我。
数据管理器
用于嵌套数据的简单数据管理器,支持点表示法访问、可扩展性和容器互操作性。
目标
- 轻量级且流畅,简单的API
- 通过点表示法管理嵌套数据
- 可组合 - 通过特性(附加功能)集成到当前容器中
- 包括以下附加功能:
- 允许保护数据(不可变)和默认值。
- IoC容器应
- 通过类、工厂等解析
- 为依赖项配置依赖项
- 允许回退、准备对象等。
- 全面测试覆盖率,符合PSR规范,容器互操作性和最佳实践
安装
通过Composer
$ composer require michaels/data-manager
入门
Manager 正如您所期望的那样执行操作:它 管理 复杂项,例如配置数据、数组和闭包。开始的最佳方式是简单地实例化 Michaels\Manager\Manager
$manager = new Michaels\Manager\Manager([ 'some' => [ 'starting' => [ 'data' => 'here (optional)' ] ] ]); // Note, you may initialize Manager with an array or any instance of Traversable (like Manager itself) /* Basic Usage. All works with dot notation as well */ $manager->add('name', 'value'); $manager->add('some.nested.data', 3); // Use dot notation for namespacing or nesting $manager->get('name'); // 'value' $manager->get('doesntexist', 'fallback'); // 'fallback' $manager->get('doesntexist') // throws an ItemNotFoundException with no fallback $manager->getIfHas('doesntexist') // returns a NoItemFoundMessage instead of a script-stopping exception $manager->getAll(); // returns array of all items $manager->all(); // returns array of all items $manager->exists('name'); // true $manager->exists('some.starting.data'); // true $manager->exists('nope'); // false $manager->has('something'); // alias of exist $manager->set('name', 'new-value'); // updates item $manager->remove('some.starting.data'); $manager->isEmpty(); // true or false $manager->toJson(); // returns json of all items echo $manager; // returns json string of all items $manager->reset($array); // rebuild with new items $manager->clear(); // empty the manager /* You can also use $manager as an array or in loops */ $manager['some']['starting']['data']; // 'here (optional)' //etc foreach ($manager as $item => $value) { // do whatever your heart desires } /* You may also push elements onto an array */ $manager->set('a.b', []); $manager->push('a.b', 'c', 'd', 'e'); $manager->get('a.b'); // ['c', 'd', 'e'] /* Finally, you may manage values using magic methods */ $manager->some()->starting()->data; // 'here (optional)' $manager->some()->item = 'item'; // sets some.item = 'item' $manager->some()->item()->drop(); // deletes some.item // Note that levels are called as a method with no params. The data is then called, updated, or set as a property.
高级功能
有关保护数据、用作IoC容器、加载文件、用作数组、默认值、组合等主题的更多信息,请参阅 文档。
互操作性
数据管理器符合 PSR规范 和 容器互操作性 规范。任何疏忽,请告知我。
测试
我们争取至少80%的测试覆盖率。
$ phpunit
您还可以使用 tests/traits
下的 tests 来测试您的集成功能。您可能需要通过克隆仓库来获取这些测试。Composer通常不会将测试包含在您的 require
贡献
欢迎贡献,并将得到充分认可。请参阅 CONTRIBUTING 以获取详细信息。
安全性
如果您发现任何安全相关的问题,请通过电子邮件 chrismichaels84@gmail.com 而不是使用问题跟踪器来报告。
致谢
- Michael Wilson
- Scott
- 打开一个issue加入我们吧!
许可
MIT许可(MIT)。有关更多信息,请参阅 许可文件。