/** * 新しい HelperObject を生成します. * このメソッドが返す HelperObject は, 引数の型に応じて以下のように振る舞います. * * - 文字列の場合: その文字列を要素名に持つ {@link Element} * - null または空文字列の場合: 空の {@link NodeList} * - Node オブジェクトの場合: その Node 自身 * * 第 2 引数に配列を指定した場合, 生成された要素に対して属性をセットすることが出来ます. * (生成された HelperObject が要素ではない場合, 第 2 引数は無視されます) * * @param string|Component $var * @param array $attr * @return HelperObject */ public function createObject($var, $attr = array()) { $object = new HelperObject($this, $var); if (count($attr)) { $object->attr($attr); } return $object; }
/** * 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()); }