/** * このオブジェクトをプロトタイプとして, 新しい HelperObject を生成します. * * @return Element */ private function createPrototype() { $original = $this->node; if ($original instanceof ContainerElement) { $node = new ContainerElement($original->getName()); $node->setAttributes($original->getAttributes()); return $node; } if ($original instanceof EmptyElement) { $node = new EmptyElement($original->getName()); $node->setAttributes($original->getAttributes()); return $node; } return null; }
/** * prototype() のテストです. * 返り値の HelperObject が以下の Component をラップしていることを確認します. * * - ラップしているノードが ContainerElement だった場合, 同じ属性を持つ空の ContainerElement * - ラップしているノードが EmptyElement だった場合, 同じ属性を持つ EmptyElement * - それ以外は, 空の NodeList * * @covers Peach\Markup\HelperObject::prototype * @covers Peach\Markup\HelperObject::createPrototype */ public function testPrototype() { $h = $this->helper; $e1 = new ContainerElement("div"); $e1->setAttributes(array("id" => "sample", "class" => "test")); $obj1 = new HelperObject($h, "div"); $obj1->attr("id", "sample")->attr("class", "test")->append("First")->append("Second")->append("Third"); $this->assertEquals($e1, $obj1->prototype()->getNode()); $e2 = new EmptyElement("input"); $e2->setAttributes(array("type" => "text", "name" => "subject", "value" => "")); $obj2 = new HelperObject($h, "input"); $obj2->attr(array("type" => "text", "name" => "subject", "value" => "")); $this->assertEquals($e2, $obj2->prototype()->getNode()); $nl = new NodeList(); $text = new Text("This is Test"); $obj3 = new HelperObject($h, $text); $this->assertEquals($nl, $obj3->prototype()->getNode()); }