jzaleski / php-open_struct
一个非常灵活的数据结构(灵感来自Ruby的`ostruct`库)
0.0.1
2015-12-23 17:22 UTC
Requires
- php: >= 5.4.0
This package is not auto-updated.
Last update: 2024-09-14 18:47:25 UTC
README
一个非常灵活的数据结构(灵感来自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: `[]`
贡献
- 分叉它( http://github.com/jzaleski/php-open_struct/fork )
- 创建您的功能分支(
git checkout -b my-new-feature) - 提交您的更改(
git commit -am 'Add some feature') - 推送到分支(
git push origin my-new-feature) - 创建新的Pull Request