2323use Reflector ;
2424use RuntimeException ;
2525use UnexpectedValueException ;
26+ use function define ;
27+ use function defined ;
2628use function file_exists ;
2729use function file_get_contents ;
2830use function get_class ;
2931use function in_array ;
3032use function is_string ;
33+ use function strrpos ;
34+ use function substr ;
3135use function token_get_all ;
3236use function trim ;
3337use const T_AS ;
3943use const T_STRING ;
4044use const T_USE ;
4145
46+ if (!defined ('T_NAME_QUALIFIED ' )) {
47+ define ('T_NAME_QUALIFIED ' , 'T_NAME_QUALIFIED ' );
48+ }
49+
50+ if (!defined ('T_NAME_FULLY_QUALIFIED ' )) {
51+ define ('T_NAME_FULLY_QUALIFIED ' , 'T_NAME_FULLY_QUALIFIED ' );
52+ }
53+
4254/**
4355 * Convenience class to create a Context for DocBlocks when not using the Reflection Component of phpDocumentor.
4456 *
@@ -221,7 +233,8 @@ private function parseNamespace(ArrayIterator $tokens) : string
221233 $ this ->skipToNextStringOrNamespaceSeparator ($ tokens );
222234
223235 $ name = '' ;
224- while ($ tokens ->valid () && (in_array ($ tokens ->current ()[0 ], [T_STRING , T_NS_SEPARATOR ], true ) || defined ('T_NAME_QUALIFIED ' ) && T_NAME_QUALIFIED === $ tokens ->current ()[0 ])) {
236+ $ acceptedTokens = [T_STRING , T_NS_SEPARATOR , T_NAME_QUALIFIED ];
237+ while ($ tokens ->valid () && in_array ($ tokens ->current ()[0 ], $ acceptedTokens , true )) {
225238 $ name .= $ tokens ->current ()[1 ];
226239 $ tokens ->next ();
227240 }
@@ -268,11 +281,11 @@ private function skipToNextStringOrNamespaceSeparator(ArrayIterator $tokens) : v
268281 break ;
269282 }
270283
271- if (defined ( ' T_NAME_QUALIFIED ' ) && T_NAME_QUALIFIED === $ currentToken [0 ]) {
284+ if ($ currentToken [0 ] === T_NAME_QUALIFIED ) {
272285 break ;
273286 }
274287
275- if (defined ('T_NAME_FULLY_QUALIFIED ' ) && T_NAME_FULLY_QUALIFIED === $ currentToken [0 ]) {
288+ if (defined ('T_NAME_FULLY_QUALIFIED ' ) && $ currentToken [0 ] === T_NAME_FULLY_QUALIFIED ) {
276289 break ;
277290 }
278291
@@ -312,6 +325,14 @@ private function extractUseStatements(ArrayIterator $tokens) : array
312325 $ currentNs .= (string ) $ tokenValue ;
313326 $ currentAlias = $ tokenValue ;
314327 break ;
328+ case T_NAME_QUALIFIED :
329+ case T_NAME_FULLY_QUALIFIED :
330+ $ currentNs .= (string ) $ tokenValue ;
331+ $ currentAlias = substr (
332+ (string ) $ tokenValue ,
333+ (int ) (strrpos ((string ) $ tokenValue , '\\' )) + 1
334+ );
335+ break ;
315336 case T_CURLY_OPEN :
316337 case '{ ' :
317338 $ state = 'grouped ' ;
@@ -325,13 +346,6 @@ private function extractUseStatements(ArrayIterator $tokens) : array
325346 $ state = 'end ' ;
326347 break ;
327348 default :
328- if (defined ('T_NAME_QUALIFIED ' ) && T_NAME_QUALIFIED === $ tokenId ) {
329- $ currentNs .= (string )$ tokenValue ;
330- $ currentAlias = substr ($ tokenValue , strrpos ($ tokenValue , '\\' ) + 1 );
331- } elseif (defined ('T_NAME_FULLY_QUALIFIED ' ) && T_NAME_FULLY_QUALIFIED === $ tokenId ) {
332- $ currentNs .= (string ) $ tokenValue ;
333- $ currentAlias = substr ($ tokenValue , strrpos ($ tokenValue , '\\' ) + 1 );
334- }
335349 break ;
336350 }
337351
0 commit comments