Pop\Dom\Child::factory PHP Method

factory() public static method

Static factory method to create child objects
public static factory ( array $c ) : Child
$c array
return Child
    public static function factory(array $c)
    {
        $nodeName = $c['nodeName'];
        $nodeValue = isset($c['nodeValue']) ? $c['nodeValue'] : null;
        $childFirst = isset($c['childrenFirst']) ? $c['childrenFirst'] : false;
        $indent = isset($c['indent']) ? $c['indent'] : null;
        $child = new static($nodeName, $nodeValue, null, $childFirst, $indent);
        if (isset($c['attributes'])) {
            $child->setAttributes($c['attributes']);
        }
        if (isset($c['childNodes'])) {
            $child->addChildren($c['childNodes']);
        }
        return $child;
    }

Usage Example

Example #1
0
 public function testChildFactoryAndRender()
 {
     $children = array('nodeName' => 'div', 'nodeValue' => 'This is a div element', 'attributes' => array('id' => 'contentDiv'), 'childrenFirst' => false, 'childNodes' => array(array('nodeName' => 'p', 'nodeValue' => 'This is a paragraph1', 'attributes' => array('style' => 'font-size: 0.9em;'), 'childrenFirst' => false, 'childNodes' => array(array('nodeName' => 'strong', 'nodeValue' => 'This is bold!', 'attributes' => array('style' => 'font-size: 1.2em;')))), array('nodeName' => 'p', 'nodeValue' => 'This is another paragraph!', 'attributes' => array('style' => 'font-size: 0.9em;'))));
     $c = Child::factory($children);
     $this->assertEquals('div', $c->getNodeName());
     $this->assertEquals(2, count($c->getChildren()));
     $this->assertEquals(1, count($c->getAttributes()));
     $code = $c->render(true);
     $string = (string) $c;
     ob_start();
     $c->render();
     $output = ob_get_clean();
     $this->assertContains('<div id="contentDiv">', $code);
     $this->assertContains('<div id="contentDiv">', $output);
     $this->assertContains('<div id="contentDiv">', $string);
 }