1717use Illuminate \Support \Facades \Facade ;
1818use Illuminate \Support \Str ;
1919use Illuminate \Support \Traits \Macroable ;
20- use PhpParser \Lexer \Emulative ;
21- use PhpParser \Node \Stmt \Class_ ;
22- use PhpParser \Node \Stmt \Namespace_ ;
23- use PhpParser \Parser \Php7 ;
2420use ReflectionClass ;
2521use Symfony \Component \Console \Output \OutputInterface ;
2622
@@ -213,8 +209,10 @@ protected function getRealTimeFacades()
213209 foreach ($ realTimeFacadeFiles as $ file ) {
214210 try {
215211 $ name = $ this ->getFullyQualifiedClassNameInFile ($ file );
216- $ facades [$ name ] = $ name ;
217- } catch (\Exception $ e ) {
212+ if ($ name ) {
213+ $ facades [$ name ] = $ name ;
214+ }
215+ } catch (\Throwable $ e ) {
218216 continue ;
219217 }
220218 }
@@ -226,26 +224,17 @@ protected function getFullyQualifiedClassNameInFile(string $path)
226224 {
227225 $ contents = file_get_contents ($ path );
228226
229- $ parsers = new Php7 (new Emulative ());
230-
231- $ parsed = collect ($ parsers ->parse ($ contents ) ?: []);
232-
233- $ namespace = $ parsed ->first (function ($ node ) {
234- return $ node instanceof Namespace_;
235- });
236-
237- if ($ namespace ) {
238- $ name = $ namespace ->name ->toString ();
239-
240- $ class = collect ($ namespace ->stmts )->first (function ($ node ) {
241- return $ node instanceof Class_;
242- });
227+ // Match namespace
228+ preg_match ('/namespace\s+([^;]+);/ ' , $ contents , $ namespaceMatch );
229+ $ namespace = isset ($ namespaceMatch [1 ]) ? $ namespaceMatch [1 ] : '' ;
243230
244- if ( $ class) {
245- $ name .= '\\' . $ class -> name -> toString ( );
246- }
231+ // Match class name
232+ preg_match ( ' /class\s+([a-zA-Z0-9_]+)/ ' , $ contents , $ classMatch );
233+ $ className = isset ( $ classMatch [ 1 ]) ? $ classMatch [ 1 ] : '' ;
247234
248- return $ name ;
235+ // Combine namespace and class name
236+ if ($ namespace && $ className ) {
237+ return $ namespace . '\\' . $ className ;
249238 }
250239 }
251240
0 commit comments