@@ -34,10 +34,10 @@ public static function append(string $file, array $list): void
34
34
$ classes [] = sprintf ("\$classes[] = %s; \n" , var_export ($ item , true ));
35
35
}
36
36
37
- file_put_contents ($ file , sprintf ("\n\$classes = []; \n%sPreloader ::preload( \$classes); \n" , implode ('' , $ classes )), \FILE_APPEND );
37
+ file_put_contents ($ file , sprintf ("\n\$classes = []; \n%s \$ preloaded = Preloader ::preload( \$classes, \$ preloaded ); \n" , implode ('' , $ classes )), \FILE_APPEND );
38
38
}
39
39
40
- public static function preload (array $ classes ): void
40
+ public static function preload (array $ classes, array $ preloaded = [] ): array
41
41
{
42
42
set_error_handler (function ($ t , $ m , $ f , $ l ) {
43
43
if (error_reporting () & $ t ) {
@@ -50,7 +50,6 @@ public static function preload(array $classes): void
50
50
});
51
51
52
52
$ prev = [];
53
- $ preloaded = [];
54
53
55
54
try {
56
55
while ($ prev !== $ classes ) {
@@ -65,6 +64,8 @@ public static function preload(array $classes): void
65
64
} finally {
66
65
restore_error_handler ();
67
66
}
67
+
68
+ return $ preloaded ;
68
69
}
69
70
70
71
private static function doPreload (string $ class , array &$ preloaded ): void
@@ -76,6 +77,10 @@ private static function doPreload(string $class, array &$preloaded): void
76
77
$ preloaded [$ class ] = true ;
77
78
78
79
try {
80
+ if (!class_exists ($ class ) && !interface_exists ($ class , false ) && !trait_exists ($ class , false )) {
81
+ return ;
82
+ }
83
+
79
84
$ r = new \ReflectionClass ($ class );
80
85
81
86
if ($ r ->isInternal ()) {
0 commit comments