Example #1
0
 /**
  * @param string $dir
  */
 private static function _addDirectory($dir)
 {
     if (!is_dir($dir)) {
         return;
     }
     if (!isset(self::$dirs[$dir])) {
         self::$dirs[$dir] = [];
     }
     $files = self::$dirs[$dir];
     $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS));
     foreach ($iterator as $path => $file) {
         /** @var SplFileInfo $file */
         if (!$file->isFile() || !in_array($file->getExtension(), ['php', 'inc'])) {
             continue;
         }
         unset($files[$path]);
         $checksum = md5_file($path);
         if (isset(self::$dirs[$dir][$path]) && self::$dirs[$dir][$path] === $checksum) {
             continue;
         }
         self::$dirs[$dir][$path] = $checksum;
         self::$cacheChanged = true;
         $classes = self::findClasses($path);
         foreach ($classes as $class) {
             $class = strtolower($class);
             if (!isset(self::$classes[$class])) {
                 self::$classes[$class] = $path;
             }
         }
     }
     foreach ($files as $path) {
         unset(self::$dirs[$path]);
         self::$cacheChanged = true;
     }
 }