فهرست منبع

using finder for classmap generator

Robert Schönthal 12 سال پیش
والد
کامیت
4af410e1b9
1فایلهای تغییر یافته به همراه7 افزوده شده و 7 حذف شده
  1. 7 7
      src/Composer/Autoload/ClassMapGenerator.php

+ 7 - 7
src/Composer/Autoload/ClassMapGenerator.php

@@ -12,6 +12,7 @@
  */
 
 namespace Composer\Autoload;
+use Symfony\Component\Finder\Finder;
 
 /**
  * ClassMapGenerator
@@ -53,7 +54,7 @@ class ClassMapGenerator
             if (is_file($path)) {
                 $path = array(new \SplFileInfo($path));
             } elseif (is_dir($path)) {
-                $path = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path));
+                $path = Finder::create()->files()->followLinks()->name('/.*[php|inc]/')->in($path);
             } else {
                 throw new \RuntimeException(
                     'Could not scan for classes inside "'.$path.
@@ -65,10 +66,6 @@ class ClassMapGenerator
         $map = array();
 
         foreach ($path as $file) {
-            if (!$file->isFile()) {
-                continue;
-            }
-
             $filePath = $file->getRealPath();
 
             if (!in_array(pathinfo($filePath, PATHINFO_EXTENSION), array('php', 'inc'))) {
@@ -84,7 +81,6 @@ class ClassMapGenerator
             foreach ($classes as $class) {
                 $map[$class] = $filePath;
             }
-
         }
 
         return $map;
@@ -102,7 +98,11 @@ class ClassMapGenerator
         $traits = version_compare(PHP_VERSION, '5.4', '<') ? '' : '|trait';
 
         try {
-            $contents = php_strip_whitespace($path);
+            if (!is_readable($path)) {
+                throw new \RuntimeException('file not found');
+            }
+            //suppress warnings on unclosed comments
+            $contents = @php_strip_whitespace($path);
         } catch (\Exception $e) {
             throw new \RuntimeException('Could not scan for classes inside '.$path.": \n".$e->getMessage(), 0, $e);
         }