mmamedov/array-property

以直观和面向对象的方式访问数组。键和值被视为属性。

v1.1 2016-05-15 08:56 UTC

This package is not auto-updated.

Last update: 2024-09-24 21:27:19 UTC


README

Build Status Latest Stable Version License

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 示例 目录中的代码。

享受吧!