public function call()
 {
     $args = $this->_parse_args(func_get_args(), $this->_args);
     if ($this->_use_ob) {
         return WPHelper::ob_function($this->_function, $args);
     } else {
         return (string) call_user_func_array($this->_function, $args);
     }
 }
 private function registerAdminMenus($menus)
 {
     // https://codex.wordpress.org/Function_Reference/add_menu_page
     // https://codex.wordpress.org/Function_Reference/add_submenu_page
     $submenuSlugNum = 0;
     $slugPrefix = str_replace(' ', '_', $this->getPluginName());
     $wpSlugs = WPHelper::getAdminMenuSlugs();
     $menuSlugs = array();
     foreach ($menus as $parentSlug => $description) {
         if (!isset($wpSlugs[$parentSlug])) {
             $parentSlug = $slugPrefix . $parentSlug;
             if (!isset($menuSlugs[$parentSlug])) {
                 $options = $description['options'];
                 add_menu_page(isset($options['pageTitle']) ? $options['pageTitle'] : $parentSlug, isset($options['menuTitle']) ? $options['menuTitle'] : $parentSlug, isset($options['capability']) ? $options['capability'] : 'read', array($this->_frontController, 'showPageContent'), isset($options['icon_url']) ? $options['icon_url'] : '', isset($options['position']) ? $options['position'] : 99);
                 $menuSlugs[$parentSlug] = $parentSlug;
             }
         }
         if (isset($description['submenus']) && is_array($description['submenus'])) {
             foreach ($description['submenus'] as $menu) {
                 add_submenu_page($parentSlug, isset($menu['pageTitle']) ? $menu['pageTitle'] : $slugPrefix, isset($menu['menuTitle']) ? $menu['menuTitle'] : $slugPrefix, isset($menu['capability']) ? $menu['capability'] : '', $slugPrefix . '_' . (isset($menu['slug']) ? $menu['slug'] : $submenuSlugNum), array($this->_frontController, 'showPageContent'));
                 $submenuSlugNum++;
             }
         }
     }
 }