コード例 #1
0
 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;
 }
コード例 #2
0
ファイル: EFile.php プロジェクト: sinelnikof/yiiext
 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;
 }