michaels/data-manager

用于嵌套数据的简单数据管理器,支持点表示法数组访问、可扩展性和容器互操作性。

v0.9.3 2017-03-08 22:12 UTC

README

尽管它仍然可以使用,但应考虑它已被弃用。任何提出的PR都将无条件接受。如果您想拥有此仓库,请打开一个issue并联系我。

数据管理器

Latest Version Documentation Status Software License Build Status Coverage Status Scrutinizer Code Quality Total Downloads

SensioLabsInsight

用于嵌套数据的简单数据管理器,支持点表示法访问、可扩展性和容器互操作性。

查看完整文档

目标

  • 轻量级且流畅,简单的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 而不是使用问题跟踪器来报告。

致谢

许可

MIT许可(MIT)。有关更多信息,请参阅 许可文件