jzaleski/php-open_struct

一个非常灵活的数据结构(灵感来自Ruby的`ostruct`库)

0.0.1 2015-12-23 17:22 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:47:25 UTC


README

Build Status

一个非常灵活的数据结构(灵感来自Ruby的ostruct库)

需求

此库需要PHP 5.4+

安装

您可以使用以下命令轻松安装Open_Struct

composer [global] require 'jzaleski/php-open_struct=*'

用法

创建一个新的[空]实例

$struct = new Open_Struct;

从属性数组创建一个新实例

$struct = new Open_Struct(['foo' => 1, 'bar' => ['biz' => 2]]);

引用顶级值

$value = $struct->foo;

通过索引/键获取顶级值

$value = $struct['foo'];

引用嵌套值

$nested_value = $struct->bar->biz;

通过索引/键获取嵌套值

$nested_value = $struct['bar']['biz'];

设置顶级值

$struct->foo = 2;

通过索引/键设置顶级值

$struct['foo'] = 2;

设置嵌套值

$struct->bar->biz = 3;

通过索引/键设置嵌套值

$struct['bar']['biz'] = 3;

取消设置顶级值

unset($struct->foo);

通过索引/键取消设置顶级值

unset($struct['foo']);

检查键是否存在

isset($struct->foo);

通过索引/键检查键是否存在

isset($struct['foo']);

设置回调值(这在您希望导出或延迟加载属性的场景中很有用)

$dao = new Data_Access_Object;

$struct = new Open_Struct(['something' => function() use ($dao) { return $dao->get_something(); }]);

$struct->something;

dirty方法将在初始化(构造函数)完成后返回false

$struct = new Open_Struct(['foo' => 1]);

$struct->dirty(); // returns: `false`

初始化(构造函数)后,当设置值时,dirty方法将返回true

$struct = new Open_Struct;

$struct->foo = 1;

$struct->dirty(); // returns: `true`

初始化(构造函数)后,当值恢复到原始状态时,dirty方法将返回false

$struct = new Open_Struct(['foo' => 1]);

$struct->foo = 2;

$struct->dirty(); // returns: `true`

$struct->foo = 1;

$struct->dirty(); // returns: `false`

获取属性数组

$struct = new Open_Struct(['foo' => 1]);

$struct->foo = 2;

$struct->bar = 3;

$struct->attributes(); // returns: `['foo' => 2, 'bar' => 3]`

获取更改的属性数组

$struct = new Open_Struct(['foo' => 1]);

$struct->bar = 2;

$struct->changed_attributes(); // returns: `['bar' => 2]`

changed_attributes方法将在初始化(构造函数)后、当值恢复到原始状态时返回空数组

$struct = new Open_Struct(['foo' => 1]);

$struct->foo = 2;

$struct->changed_attributes(); // returns: `['foo' => 2]`

$struct->foo = 1;

$struct->changed_attributes(); // returns: `[]`

贡献

  1. 分叉它( http://github.com/jzaleski/php-open_struct/fork
  2. 创建您的功能分支(git checkout -b my-new-feature
  3. 提交您的更改(git commit -am 'Add some feature'
  4. 推送到分支(git push origin my-new-feature
  5. 创建新的Pull Request