public set ( unknown $key, unknown $value, $delimiter = '/' ) | ||
$key | unknown | |
$value | unknown |
public function set($key, $value, $delimiter = '/')
{
if (strpos($key, $delimiter) === false) {
$this->instances[$key] = $value;
return $this;
}
$instances = $this->instances;
$keys = explode($delimiter, $key);
$lastKeyIndex = count($keys) - 1;
$ref =& $instances;
foreach (explode($delimiter, $key) as $i => $k) {
array_shift($keys);
if (isset($ref[$k])) {
if ($i === $lastKeyIndex) {
// last key
$ref[$k] = $value;
} else {
$ref =& $ref[$k];
}
} else {
if (is_array($ref)) {
$ref[$k] = $this->convertMultidimensional($keys, $value);
} else {
throw new \RuntimeException("Couldn't set a value");
}
break;
}
}
$this->instances = $instances;
return $this;
}
public function testIterator() { $container = new Container(); $container->set("foo", "bar"); $container->set("foo1", "bar1"); $container->set("foo2", "bar2"); $container->set("foo3", " bar3"); $container->set("foo4", "bar4"); $i = 0; $status = 0; foreach ($container as $k => $v) { if ($i == 0) { $this->assertEquals("foo", $k); $status++; } if ($i == 1) { $this->assertEquals("foo1", $k); $status++; } if ($i == 2) { $this->assertEquals("foo2", $k); $status++; } if ($i == 3) { $this->assertEquals("foo3", $k); $status++; } if ($i == 4) { $this->assertEquals("foo4", $k); $status++; } $i++; } $this->assertEquals(5, $status); $this->assertEquals(5, count($container)); }