@@ -214,28 +214,28 @@ private function _scanChar($result)
214214
215215 return true ;
216216 }
217-
217+
218218 private function _scanUse ($ result )
219219 {
220- if (preg_match ("/^use function ( .+?);/ " , $ result ->buffer , $ use )) {
220+ if (preg_match ("/^use (?P<type> function |const )?(?P<name> .+?)( as (?P<alias>.+?))? ;/ " , $ result ->buffer , $ use )) {
221221 $ result ->buffer = substr ($ result ->buffer , strlen ($ use [0 ]));
222- if (strpos ($ use [0 ], ' as ' ) !== false ) {
223- list ($ function , $ alias ) = explode (' as ' , $ use [1 ]);
224- } else {
225- $ function = $ use [1 ];
226- $ alias = substr ($ use [1 ], strrpos ($ use [1 ], '\\' ) + 1 );
222+
223+ if (! isset ($ use ['alias ' ]) || strlen ($ use ['alias ' ]) == 0 ) {
224+ $ use ['alias ' ] = substr ($ use ['name ' ], strrpos ($ use ['name ' ], '\\' ) + 1 );
227225 }
228- $ result ->statements [] = sprintf ("function %s() { return call_user_func_array('%s', func_get_args()); }; " , $ alias , $ function );
229- return true ;
230- } else if (preg_match ("/^use (.+?);/ " , $ result ->buffer , $ use )) {
231- $ result ->buffer = substr ($ result ->buffer , strlen ($ use [0 ]));
232- if (strpos ($ use [0 ], ' as ' ) !== false ) {
233- list ($ class , $ alias ) = explode (' as ' , $ use [1 ]);
234- } else {
235- $ class = $ use [1 ];
236- $ alias = substr ($ use [1 ], strrpos ($ use [1 ], '\\' ) + 1 );
226+
227+ switch (trim ($ use ['type ' ])) {
228+ case 'function ' :
229+ $ result ->statements [] = sprintf ("function %s() { return call_user_func_array('%s', func_get_args()); }; " , $ use ['alias ' ], $ use ['name ' ]);
230+ break ;
231+ case 'const ' :
232+ $ result ->statements [] = sprintf ("define('%s', %s); " , $ use ['alias ' ], $ use ['name ' ]);
233+ break ;
234+ default :
235+ $ result ->statements [] = sprintf ("class_alias('%s', '%s'); " , $ use ['name ' ], $ use ['alias ' ]);
236+ break ;
237237 }
238- $ result -> statements [] = sprintf ( " class_alias('%s', '%s'); " , $ class , $ alias );
238+
239239 return true ;
240240 } else {
241241 return false ;
0 commit comments