/** * @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; } }