public function getChildComponents($select = array())
    {
        $select = $this->_formatSelect($select);
        $sc = $select->getHash();
        if (isset($this->_childComponentsCache[$sc])) {
            Kwf_Benchmark::count('getChildComponents cached');
        } else {
            Kwf_Benchmark::count('getChildComponents uncached');
        }

        if (!isset($this->_childComponentsCache[$sc])) {

            $this->_childComponentsCache[$sc] = array();

            if ($select->getPart(Kwf_Component_Select::WHERE_COMPONENT_CLASSES) === array()) {
                return $this->_childComponentsCache[$sc]; //vorzeitig abbrechen, da kommt sicher kein ergebnis
            }

            if ($select->hasPart(Kwf_Component_Select::LIMIT_COUNT)) {
                $limitCount = $select->getPart(Kwf_Component_Select::LIMIT_COUNT);
            } else {
                $limitCount = null;
            }

            $generators = Kwf_Component_Generator_Abstract::getOwnInstances($this, $select);
            $ret = $this->_getChildComponentsFromGenerators($generators, $select, $limitCount);

            if (is_null($limitCount) || count($ret) < $limitCount) { //wenn limit nicht erreicht, inherited generator auch noch fragen
                if (!is_null($limitCount)) $limitCount -= count($ret);
                $generators = Kwf_Component_Generator_Abstract::getInheritedInstances($this, $select);
                $ret += $this->_getChildComponentsFromGenerators($generators, $select, $limitCount); //kein array_merge, da wuerden die keys verloren gehen - und die sind eh eindeutig
            }

            $this->_childComponentsCache[$sc] = $ret;
        }
        return $this->_childComponentsCache[$sc];
    }
public function getChildComponents($select = array())
    {
        $select = $this->_formatSelect($select);
        $sc = $select->getHash();
        if (isset($this->_childComponentsCache[$sc])) {
            Kwf_Benchmark::count('getChildComponents cached');
        } else {
            Kwf_Benchmark::count('getChildComponents uncached');
        }

        if (!isset($this->_childComponentsCache[$sc])) {

            $this->_childComponentsCache[$sc] = array();

            if ($select->getPart(Kwf_Component_Select::WHERE_COMPONENT_CLASSES) === array()) {
                return $this->_childComponentsCache[$sc]; //vorzeitig abbrechen, da kommt sicher kein ergebnis
            }

            if ($select->hasPart(Kwf_Component_Select::LIMIT_COUNT)) {
                $limitCount = $select->getPart(Kwf_Component_Select::LIMIT_COUNT);
            } else {
                $limitCount = null;
            }

            $generators = Kwf_Component_Generator_Abstract::getOwnInstances($this, $select);
            $ret = $this->_getChildComponentsFromGenerators($generators, $select, $limitCount);

            if (is_null($limitCount) || count($ret) < $limitCount) { //wenn limit nicht erreicht, inherited generator auch noch fragen
                if (!is_null($limitCount)) $limitCount -= count($ret);
                $generators = Kwf_Component_Generator_Abstract::getInheritedInstances($this, $select);
                $ret += $this->_getChildComponentsFromGenerators($generators, $select, $limitCount); //kein array_merge, da wuerden die keys verloren gehen - und die sind eh eindeutig
            }

            $this->_childComponentsCache[$sc] = $ret;
        }
        return $this->_childComponentsCache[$sc];
    }
public function getChildComponents ( $ select = array ( ) ) { $ select = $ this -> _formatSelect ( $ select ) ; $ sc = $ select -> getHash ( ) ; if ( isset ( $ this -> _childComponentsCache [ $ sc ] ) ) { Kwf_Benchmark :: count ( 'getChildComponents cached' ) ; } else { Kwf_Benchmark :: count ( 'getChildComponents uncached' ) ; } if ( ! isset ( $ this -> _childComponentsCache [ $ sc ] ) ) { $ this -> _childComponentsCache [ $ sc ] = array ( ) ; if ( $ select -> getPart ( Kwf_Component_Select :: WHERE_COMPONENT_CLASSES ) === array ( ) ) { return $ this -> _childComponentsCache [ $ sc ] ; //vorzeitig abbrechen, da kommt sicher kein ergebnis } if ( $ select -> hasPart ( Kwf_Component_Select :: LIMIT_COUNT ) ) { $ limitCount = $ select -> getPart ( Kwf_Component_Select :: LIMIT_COUNT ) ; } else { $ limitCount = null ; } $ generators = Kwf_Component_Generator_Abstract :: getOwnInstances ( $ this , $ select ) ; $ ret = $ this -> _getChildComponentsFromGenerators ( $ generators , $ select , $ limitCount ) ; if ( is_null ( $ limitCount ) || count ( $ ret ) < $ limitCount ) { //wenn limit nicht erreicht, inherited generator auch noch fragen if ( ! is_null ( $ limitCount ) ) $ limitCount -= count ( $ ret ) ; $ generators = Kwf_Component_Generator_Abstract :: getInheritedInstances ( $ this , $ select ) ; $ ret += $ this -> _getChildComponentsFromGenerators ( $ generators , $ select , $ limitCount ) ; //kein array_merge, da wuerden die keys verloren gehen - und die sind eh eindeutig } $ this -> _childComponentsCache [ $ sc ] = $ ret ; } return $ this -> _childComponentsCache [ $ sc ] ; }
Returns child components matching the given select

@param array|Kwf_Component_Select
@return Kwf_Component_Data[]
Returns child components matching the given select