Altax\Module\Server\ServerModule::node PHP Method

node() public method

Set node
public node ( )
    public function node()
    {
        $args = func_get_args();
        if (count($args) < 1) {
            throw new \RuntimeException("Missing argument. Must 1 arguments at minimum.");
        }
        $node = new Node();
        if (count($args) === 1) {
            // When it's passed 1 argument, register node with name only.
            $node->setName($args[0]);
        } elseif (count($args) === 2) {
            // When it's passed 2 arguments, register node with roles and some options.
            $node->setName($args[0]);
            if (is_string($args[1]) || Arr::isVector($args[1])) {
                $node->setReferenceRoles($args[1]);
            } else {
                if (isset($args[1]['roles'])) {
                    $node->setReferenceRoles($args[1]['roles']);
                    unset($args[1]['roles']);
                }
                $node->setOptions($args[1]);
            }
        } else {
            // When it's passed more than 3 arguments, register node with roles and some options.
            $node->setName($args[0]);
            $node->setOptions($args[1]);
            $node->setReferenceRoles($args[2]);
        }
        $this->container->set("nodes/" . $node->getName(), $node);
        $roles = $node->getReferenceRoles();
        if ($roles) {
            if (is_string($roles)) {
                $this->role($roles, $node->getName());
            } else {
                if (is_array($roles)) {
                    foreach ($roles as $role) {
                        $this->role($role, $node->getName());
                    }
                }
            }
        }
        return $node;
    }

Usage Example

Example #1
0
 public function testNode()
 {
     $module = new ServerModule($this->container);
     $module->node("node1");
     $this->assertEquals("node1", $module->getNode("node1")->getName());
     $module->node("node2", "role1");
     $this->assertEquals("node2", $module->getNode("node2")->getName());
     $this->assertSame(array("node2" => "node2"), $module->getRole("role1"));
     $module->node("node3", array("role1", "role2"));
     $this->assertEquals("node3", $module->getNode("node3")->getName());
     $this->assertSame(array("node3" => "node3"), $module->getRole("role2"));
     $module->node("node4", array("roles" => "role3"));
     $this->assertEquals("node4", $module->getNode("node4")->getName());
     $this->assertSame(array("node4" => "node4"), $module->getRole("role3"));
     $module->node("node5", array("roles" => array("role4", "role5")));
     $this->assertEquals("node5", $module->getNode("node5")->getName());
     $this->assertSame(array("node5" => "node5"), $module->getRole("role4"));
     $this->assertSame(array("node5" => "node5"), $module->getRole("role5"));
     $module->node("node6", array("roles" => "role4"));
     $this->assertSame(array("node5" => "node5", "node6" => "node6"), $module->getRole("role4"));
     $module->node("node7", array("username" => "kohkimakimoto"), "role7");
     $this->assertSame(array("node7" => "node7"), $module->getRole("role7"));
 }