public function testGetComponentClassesByParentClass() { $c = 'Kwc_Chained_Trl_Component.Kwc_Basic_None_Component'; $cls = Kwc_Abstract::getComponentClassesByParentClass($c); $this->assertEquals(array($c), $cls); $c = 'Kwc_Chained_Trl_Component.Kwc_Basic_None_Component'; $cls = Kwc_Abstract::getComponentClassesByParentClass('Kwc_Chained_Trl_Component'); $this->assertEquals(array($c), $cls); }
public function getListeners() { $ret = array(); $ret[] = array('class' => null, 'event' => 'Kwf_Component_Event_Page_Added', 'callback' => 'onPageAddedRemoved'); $ret[] = array('class' => null, 'event' => 'Kwf_Component_Event_Page_Removed', 'callback' => 'onPageAddedRemoved'); foreach (Kwc_Abstract::getComponentClassesByParentClass('Kwc_Chained_Start_Component') as $c) { $ret[] = array('class' => $c, 'event' => 'Kwf_Component_Event_Component_Removed', 'callback' => 'onChainedStartAddedRemoved'); $ret[] = array('class' => $c, 'event' => 'Kwf_Component_Event_Component_Added', 'callback' => 'onChainedStartAddedRemoved'); } return $ret; }
/** * Returns all components matching a component class (including classes inheriting that class) * * Use with care, this is only efficient if a few components exist. * * @see getComponentsBySameClass * @param string|array component class * @param array|Kwf_Component_Select * @return Kwf_Component_Data[] */ public function getComponentsByClass($class, $select = array()) { if (is_array($select)) { $select = new Kwf_Component_Select($select); } $cacheId = (is_array($class) ? implode(',', $class) : $class) . $select->getHash(); if (!isset($this->_componentsByClassCache[$cacheId])) { $lookingForChildClasses = Kwc_Abstract::getComponentClassesByParentClass($class); $ret = $this->getComponentsBySameClass($lookingForChildClasses, $select); $this->_componentsByClassCache[$cacheId] = $ret; } return $this->_componentsByClassCache[$cacheId]; }