コード例 #1
0
ファイル: html_element.php プロジェクト: 2626suke/curryfw
 /**
  * Create element by tag setting array
  * 
  * @param array $setting
  * @return HtmlElement
  */
 protected static function _createElement($setting)
 {
     if (!isset($setting['tag_name'])) {
         throw new Exception('Specification of "tag_name" is required, but not specified.');
     }
     $elem = new HtmlElement($setting['tag_name']);
     if (isset($setting['attributes'])) {
         if (!is_array($setting['attributes'])) {
             throw new Exception('Specification of "attributes" in element setting must be an array, ' . gettype($setting['attributes']) . ' given.');
         }
         $elem->setAttributes($setting['attributes']);
     }
     if (isset($setting['is_empty'])) {
         $elem->setIsEmptyTag($setting['is_empty']);
     }
     if (isset($setting['nodes'])) {
         if ($elem->isEmptyTag()) {
             throw new Exception('Empty tag cannot contain node.');
         }
         if (!is_array($setting['nodes'])) {
             throw new Exception('Specification of "nodes" in element setting must be an array, ' . gettype($setting['nodes']) . ' given.');
         }
         foreach ($setting['nodes'] as $node) {
             if (is_array($node)) {
                 $subElem = self::_createElement($node);
                 $elem->addElement($subElem);
             } else {
                 $elem->addText($node);
             }
         }
     }
     if (isset($setting['text'])) {
         if ($elem->isEmptyTag()) {
             throw new Exception('Empty tag cannot contain node.');
         }
         if (is_array($setting['text']) || is_object($setting['text'])) {
             throw new Exception('Specification of "text" in element setting must be string, ' . gettype($setting['text']) . ' given.');
         }
         $elem->setText($setting['text']);
     }
     return $elem;
 }