mmamedov / array-property
以直观和面向对象的方式访问数组。键和值被视为属性。
v1.1
2016-05-15 08:56 UTC
Requires
- php: >=5.5.0
This package is not auto-updated.
Last update: 2024-09-24 21:27:19 UTC
README
ArrayProperty
PHP操作数组的语法糖。以面向对象风格读取和写入数组。键被视为属性。
ArrayProperty 可以用于任何 PHP 数组变量。
使用 composer 安装(推荐)
composer require mmamedov/array-property
或手动将其添加到您的 composer.json 文件中
"require": { "mmamedov/array-property": "^1.1" }
用法
考虑以下示例 PHP 数组
$sample = array( 'app' => array( 'log_dir' => '/log/path', 'debug' => false, 'log' => true, 'version' => '2.3', 'deep' => array( 'inner' => 'some value', 'level' => '2' ) ), 'my node' => 'some value' );
这就是使用 ArrayProperty 处理它的简单方法
$a = new ArrayProperty($sample); echo $a->app->log_dir; //outputs /log/path echo $a->app->deep->inner; //outputs 'some value' //convert to array $deep = $a->app->deep->toArray(); print_r($deep); //outputs deep as array; //check if value exists: $a->app->exist('log_dir') //returns true
加载新的数组并直接访问其值
$prop = new ArrayProperty(array()); $new = array(1 => 'apple', 2 => 'orange', 3 => 'olive', 4 => 'grapes', 'multi'=>array('key'=>'value')); echo $prop->loadArray($new)->{1}; //outputs "apple" echo $prop->multi->key; //outputs "value"
现在让我们向上面创建的 $prop
ArrayProperty 对象添加新元素
$prop->myNewNode = "myValue"; //you can assign arrays as well. echo $prop->myNewNode; //outputs 'myValue'; //overwrite existing elements $prop->{1} = "banana"; echo $prop->{1}; //now outputs "banana" instead of "apple"
请注意,不支持多维写入,例如 $prop->firstIndex->second = "value";
您可以在 OBJECT_MODE 和 MIXED_MODE(默认)模式之间切换。模式设置为构造函数的第二个参数,或通过调用 setMode() 方法。在 MIXED_MODE 中,数组值返回其原始类型,而在 OBJECT_MODE 中,返回的值始终是 ArrayProperty 对象
$prop->setMode(ArrayProperty::OBJECT_MODE); var_dump($prop->myNewNode); //returns ArrayProperty object $prop->setMode(ArrayProperty::MIXED_MODE); var_dump($prop->myNewNode); //returns "myValue" which was set before
更多示例请参阅 ArrayProperty 示例 目录中的代码。
享受吧!