name = $name; $this->cnt = $cnt; $this->_empty = false;// default false $this->_childrens = array(); if (array_key_exists('empty', $params)) { $this->setEmpty(); } $this->attr = $params; } function getAttr($name) { if (array_key_exists($name, $this->attr)) { $this->attr[$name]; } return null; } function setAttr($name, $value = '') { $this->attr[$name] = $value; } function removeAttr($name, $value = '') { unset($this->attr[$name]); } function setEmpty($bool) { $this->_empty = ($bool)? true : false; } function isEmpty() { return $this->_empty; } function hasChildNodes() { return !empty($this->_childrens); } function &getChildNodes() { return $this->_childrens; } /** * String or object Html_tag */ function appendChild($tag) { $this->_childrens[] = $tag; } /** * overwrite in sub class */ function _prepareHtml() { } function toHtml() { $this->_prepareHtml(); $ret = ''; $attr_out = ''; if (!empty($this->attr)) { $attr_arr = array(); foreach ($this->attr as $k_attr => $v_attr) { $attr_arr[] = $k_attr . '="' . $v_attr . '"'; } if (!empty($attr_arr)) { $attr_out = ' ' . implode(' ', $attr_arr); } } if ($this->_empty) { $ret .= '<' . $this->name . $attr_out . ' />'; } else { $ret .= '<' . $this->name . $attr_out . '>'; if (is_string($this->cnt)) { $ret .= $this->cnt; } else if (is_object($this->cnt)) { $ret .= $this->cnt->toHtml(); } if (!empty($this->_childrens)) { foreach ($this->_childrens as $v_child) { if (is_string($v_child)) { $ret .= $v_child; } else if (is_object($v_child)) { $ret .= $v_child->toHtml(); } } } $ret .= 'name . '>'; } return $ret; } function &wrap($tag_name, $params = array()) { $tag = Html::_($tag_name, $this, $params); return $tag; } } class Html_table extends Html_tag { var $thead; var $tfoot; var $tbody; function __construct($content, $params = array()) { parent::__construct('table', $content, $params); $this->thead = null; $this->tfoot = null; $this->tbody = null; } /** * add row to thead */ function addHeadRow($html_row) { if (!$this->thead) $this->thead = Html::_('thead'); $this->thead->appendChild($html_row); } /** * add row to tfoot */ function addFootRow($html_row) { if (!$this->tfoot) $this->tfoot = Html::_('tfoot'); $this->tfoot->appendChild($html_row); } /** * add row to tbody */ function addBodyRow($html_row) { if (!$this->tbody) $this->tbody = Html::_('tbody'); $this->tbody->appendChild($html_row); } function _prepareHtml() { $this->cnt = null;// remove all set cnt ? $this->_childrens = null;// remove all childrens ? if ($this->thead) $this->appendChild($this->thead); if ($this->tfoot) $this->appendChild($this->tfoot); if ($this->tbody) $this->appendChild($this->tbody); } }