initialize($config); } public static function create($config = array()) { return new static($config); } public function initialize($config = array()) { $this->_clear(); $this->ul_attributes = $config; return $this; } private function _clear() { $this->ul_attributes = array(); $this->links = array(); } public function add($label, $url = null, $icon = null, Menu $submenu = null, $li_class = null) { $link = array(); $link['label'] = $label; if (!is_null($url)) $link['url'] = $url; if (!is_null($icon)) $link['icon'] = $icon; if (!is_null($submenu)) $link['submenu'] = $submenu; if (!is_null($li_class)) { $link['li_class'] = $li_class; } array_push($this->links, $link); return $this; } public function render() { // render ul $output = $this->_generate_tag_open('ul', $this->ul_attributes); foreach ($this->links as $link) { // '
  • ' $li_attributes = array(); if (isset($link['li_class'])) { $li_attributes['class'] = $link['li_class']; } $output .= $this->_generate_tag_open('li', $li_attributes); // '' if (isset($link['url']) && !empty($link['url'])) { $a_attributes['href'] = $link['url']; $output .= $this->_generate_tag_open('a', $a_attributes); // '' if (isset($link['icon'])) { $i_attributes['class'] = $link['icon']; $output .= $this->_generate_tag_open('i', $i_attributes) . ''; } } $output .= $link['label']; // if (isset($link['submenu']) && !is_null($link['submenu'])) { $output .= $this->_generate_tag_open('i', array( 'class' => 'fa fa-angle-left pull-right' )) . ''; } // '' if (isset($link['url'])) $output .= ''; if (isset($link['submenu']) && !is_null($link['submenu'])) $output .= $link['submenu']->render(); $output .= '
  • '; } $output .= ''; return $output; } private function _generate_tag_open($tag, $attributes) { $tag_open = "<$tag"; foreach ($attributes as $attr => $value) { $tag_open .= " $attr=\"$value\""; } $tag_open .= '>'; return $tag_open; } }