Diffs
Maple4_DocTest/trunk/tests/Maple4/Utils/ArrayTest.php
@@ -76,6 +76,10 @@
$this->assertEquals(2, $instance->bar);
$this->assertEquals(null, $instance->baz);
+ $this->assertEquals(1, $instance['foo']);
+ $this->assertEquals(2, $instance['bar']);
+ $this->assertEquals(null, $instance['baz']);
+
$this->assertEquals(1, Maple4_Utils_Array::create($test)->foo);
$this->assertEquals(2, Maple4_Utils_Array::create($test)->bar);
$this->assertEquals(null, Maple4_Utils_Array::create($test)->baz);
@@ -94,11 +98,7 @@
$instance = new Maple4_Utils_Array($test);
$this->assertEquals(3, $instance->get('baz', 3));
- $this->assertEquals(3, $instance->setDefault('baz', 3)->baz);
- $this->assertEquals(3, Maple4_Utils_Array::create($test)->setDefault('baz', 3)->baz);
-
- $this->assertEquals(3, Maple4_Utils_Array::create()->setDefault('baz', 3)->get('baz'));
- $this->assertEquals(3, Maple4_Utils_Array::create()->setDefault('baz', 3)->baz);
+ $this->assertEquals(4, Maple4_Utils_Array::create($test)->get('baz', 4));
}
/**
@@ -125,5 +125,24 @@
$this->assertEquals(3, Maple4_Utils_Array::create()->set('bar', 3)->get('bar'));
$this->assertEquals(3, Maple4_Utils_Array::create()->set('bar', 3)->bar);
+
+ // 配列をセット
+ $add = array(
+ 'foo' => 10,
+ 'baz' => 20,
+ 'nokey',
+ );
+ $instance = new Maple4_Utils_Array($test);
+ $this->assertEquals(1, $instance->get('foo'));
+ $this->assertEquals(2, $instance->get('bar'));
+ $this->assertEquals(null, $instance->get('baz'));
+ $this->assertEquals(null, $instance->get(0));
+
+ $instance->set($add);
+ $this->assertEquals(10, $instance->get('foo'));
+ $this->assertEquals(2, $instance->get('bar'));
+ $this->assertEquals(20, $instance->get('baz'));
+ $this->assertEquals('nokey', $instance->get(0));
}
+
}
\ No newline at end of file
Maple4_DocTest/trunk/src/Maple4/Utils/Array.php
@@ -52,26 +52,16 @@
* @version Release: @package_version@
* @since Class available since Release 0.2.0
*/
-class Maple4_Utils_Array
+class Maple4_Utils_Array extends ArrayObject
{
/**
- * @var array 各要素のデフォルト値
- */
- private $defaults = array();
-
- /**
- * @var array 処理する配列
- */
- private $array = array();
-
- /**
* コンストラクタ
*
* @params array $array 処理する配列
*/
public function __construct($array = array())
{
- $this->array = $array;
+ parent::__construct($array, ArrayObject::ARRAY_AS_PROPS);
}
/**
@@ -96,13 +86,7 @@
*/
public function get($key, $default = null)
{
- if (is_array($this->array) && isset($this->array[$key])) {
- $result = $this->array[$key];
- } else {
- $result = $default;
- }
-
- return $result;
+ return isset($this[$key])? $this[$key]: $default;
}
/**
@@ -115,48 +99,14 @@
*/
public function set($key, $value = null)
{
- $this->array[$key] = $value;
- return $this;
- }
-
- /**
- * 配列ということを隠蔽したアクセス
- *
- * @param mixed $key 配列要素
- * @return mixed 要素に対する値
- */
- public function __get($key)
- {
- $default = null;
- if (isset($this->default[$key])) {
- $default = $this->default[$key];
+ if (is_array($key)) {
+ foreach ($key as $k => $v) {
+ $this->set($k, $v);
+ }
+ } else {
+ $this[$key] = $value;
}
-
- return $this->get($key, $default);
- }
-
- /**
- * 配列ということを隠蔽したアクセス
- *
- * @param mixed $key 配列要素
- * @param mixed $value 要素に対する値
- */
- public function __set($key, $value)
- {
- $this->set($key, $value);
- }
-
- /**
- * 要素に対してデフォルト値をセット
- *
- * @param mixed $key 配列要素
- * @param mixed $default 要素に対するデフォルト値
- * @return object このオブジェクト自身
- */
- public function setDefault($key, $default = null)
- {
- $this->array[$key] = $default;
-
return $this;
}
+
}