/** * Returns the *Singleton* instance of this class. * * @param AbsMenuPage $menuPage * * @return $this ::class The *Singleton* instance. */ public static function getInstance(AbsMenuPage $menuPage) { $class = get_called_class(); if (!isset(self::$instances[$menuPage->getMenuSlug()])) { self::$instances[$menuPage->getMenuSlug()] = array(); } if (!isset(self::$instances[$menuPage->getMenuSlug()][$class])) { self::$instances[$menuPage->getMenuSlug()][$class] = new $class($menuPage); } return self::$instances[$menuPage->getMenuSlug()][$class]; }
/** * Registers a menu page * * @param AbsMenuPage $menuPage The menu page instance to be registered * * @author Panagiotis Vagenas <*****@*****.**> * @see WpMenuPages::$menuPages * @since 1.0.0 */ public function attachMenuPage(AbsMenuPage $menuPage) { if (isset($this->menuPages[$menuPage->getMenuSlug()])) { user_error('A page with the slug "' . $menuPage->getMenuSlug() . '" is already registered'); } $this->menuPages[$menuPage->getMenuSlug()] = $menuPage; }
/** * Each page instance should use this function to initialize options for her self * * @param AbsMenuPage $page A page to init options for * * @author Panagiotis Vagenas <*****@*****.**> * @since 1.0.0 */ public function maybeInitPageOptions(AbsMenuPage $page) { if (!isset($this->options[self::PAGE_OPT][$page->getMenuSlug()])) { $this->options[self::PAGE_OPT][$page->getMenuSlug()] = []; } }