Altax\Foundation\Container::set PHP Method

set() public method

Set a value.
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;
    }

Usage Example

Example #1
0
 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));
 }