private function getStaticEventHandlersAll($class, $event) { $inspectedClass = $class; $eventHandlers = false; do { $additionalEventHandlers = $this->getStaticEventHandlersStrict($inspectedClass, $event); if ($additionalEventHandlers !== false) { if ($eventHandlers === false) { $eventHandlers = new CList(); $eventHandlers->copyFrom($additionalEventHandlers); } else { $eventHandlers->mergeWith($additionalEventHandlers); } } $inspectedClass = get_parent_class($inspectedClass); } while ($inspectedClass !== false && $this->componentHasEvent($inspectedClass, $event)); return $eventHandlers; }
public static function findRecursive($dir, $filters = NULL, $depth = -1, $limit = 0) { if (!$filters instanceof EFileFilters) { $filters = new EFileFilters($filters); } $list = new CList(); //TODO: $dir = new DirectoryIterator(dirname(__FILE__)); foreach ($dir as $fileinfo) {} $handle = opendir($dir); while (($fileName = readdir($handle)) !== FALSE) { if ($limit > 0 && $list->count >= $limit) { break; } if ($fileName === '.' || $fileName === '..') { continue; } $file = EFile::getInstance($dir . DIRECTORY_SEPARATOR . $fileName); //TODO: подумать о сортировке прямо в цикле поиска if ($filters->run($file)) { if ($file->isDir && $depth) { $list->mergeWith(self::findRecursive($file->path, $filters, $depth - 1, $limit - $list->count)); } else { $list->add($file); } } } closedir($handle); return $list; }