radarrplexorganizrnginxsonarrdashboardhtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelanding
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							490 lines
						
					
					
						
							14 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							490 lines
						
					
					
						
							14 KiB
						
					
					
				| Valid usages of reserved keywords as identifiers | |
| ----- | |
| <?php | |
| 
 | |
| class Test { | |
|     function array() {} | |
|     function public() {} | |
| 
 | |
|     static function list() {} | |
|     static function protected() {} | |
| 
 | |
|     public $class; | |
|     public $private; | |
| 
 | |
|     const TRAIT = 3, FINAL = 4; | |
| 
 | |
|     const __CLASS__ = 1, __TRAIT__ = 2, __FUNCTION__ = 3, __METHOD__ = 4, __LINE__ = 5, | |
|           __FILE__ = 6, __DIR__ = 7, __NAMESPACE__ = 8; | |
|     // __halt_compiler does not work | |
| } | |
| 
 | |
| $t = new Test; | |
| $t->array(); | |
| $t->public(); | |
| 
 | |
| Test::list(); | |
| Test::protected(); | |
| 
 | |
| $t->class; | |
| $t->private; | |
| 
 | |
| Test::TRAIT; | |
| Test::FINAL; | |
| 
 | |
| class Foo { | |
|     use TraitA, TraitB { | |
|         TraitA::catch insteadof namespace\TraitB; | |
|         TraitA::list as foreach; | |
|         TraitB::throw as protected public; | |
|         TraitB::self as protected; | |
|         exit as die; | |
|         \TraitC::exit as bye; | |
|         namespace\TraitC::exit as byebye; | |
|         TraitA:: | |
|             // | |
|             /** doc comment */ | |
|             # | |
|         catch /* comment */ | |
|             // comment | |
|             # comment | |
|         insteadof TraitB; | |
|     } | |
| } | |
| ----- | |
| array( | |
|     0: Stmt_Class( | |
|         flags: 0 | |
|         name: Identifier( | |
|             name: Test | |
|         ) | |
|         extends: null | |
|         implements: array( | |
|         ) | |
|         stmts: array( | |
|             0: Stmt_ClassMethod( | |
|                 flags: 0 | |
|                 byRef: false | |
|                 name: Identifier( | |
|                     name: array | |
|                 ) | |
|                 params: array( | |
|                 ) | |
|                 returnType: null | |
|                 stmts: array( | |
|                 ) | |
|             ) | |
|             1: Stmt_ClassMethod( | |
|                 flags: 0 | |
|                 byRef: false | |
|                 name: Identifier( | |
|                     name: public | |
|                 ) | |
|                 params: array( | |
|                 ) | |
|                 returnType: null | |
|                 stmts: array( | |
|                 ) | |
|             ) | |
|             2: Stmt_ClassMethod( | |
|                 flags: MODIFIER_STATIC (8) | |
|                 byRef: false | |
|                 name: Identifier( | |
|                     name: list | |
|                 ) | |
|                 params: array( | |
|                 ) | |
|                 returnType: null | |
|                 stmts: array( | |
|                 ) | |
|             ) | |
|             3: Stmt_ClassMethod( | |
|                 flags: MODIFIER_STATIC (8) | |
|                 byRef: false | |
|                 name: Identifier( | |
|                     name: protected | |
|                 ) | |
|                 params: array( | |
|                 ) | |
|                 returnType: null | |
|                 stmts: array( | |
|                 ) | |
|             ) | |
|             4: Stmt_Property( | |
|                 flags: MODIFIER_PUBLIC (1) | |
|                 type: null | |
|                 props: array( | |
|                     0: Stmt_PropertyProperty( | |
|                         name: VarLikeIdentifier( | |
|                             name: class | |
|                         ) | |
|                         default: null | |
|                     ) | |
|                 ) | |
|             ) | |
|             5: Stmt_Property( | |
|                 flags: MODIFIER_PUBLIC (1) | |
|                 type: null | |
|                 props: array( | |
|                     0: Stmt_PropertyProperty( | |
|                         name: VarLikeIdentifier( | |
|                             name: private | |
|                         ) | |
|                         default: null | |
|                     ) | |
|                 ) | |
|             ) | |
|             6: Stmt_ClassConst( | |
|                 flags: 0 | |
|                 consts: array( | |
|                     0: Const( | |
|                         name: Identifier( | |
|                             name: TRAIT | |
|                         ) | |
|                         value: Scalar_LNumber( | |
|                             value: 3 | |
|                         ) | |
|                     ) | |
|                     1: Const( | |
|                         name: Identifier( | |
|                             name: FINAL | |
|                         ) | |
|                         value: Scalar_LNumber( | |
|                             value: 4 | |
|                         ) | |
|                     ) | |
|                 ) | |
|             ) | |
|             7: Stmt_ClassConst( | |
|                 flags: 0 | |
|                 consts: array( | |
|                     0: Const( | |
|                         name: Identifier( | |
|                             name: __CLASS__ | |
|                         ) | |
|                         value: Scalar_LNumber( | |
|                             value: 1 | |
|                         ) | |
|                     ) | |
|                     1: Const( | |
|                         name: Identifier( | |
|                             name: __TRAIT__ | |
|                         ) | |
|                         value: Scalar_LNumber( | |
|                             value: 2 | |
|                         ) | |
|                     ) | |
|                     2: Const( | |
|                         name: Identifier( | |
|                             name: __FUNCTION__ | |
|                         ) | |
|                         value: Scalar_LNumber( | |
|                             value: 3 | |
|                         ) | |
|                     ) | |
|                     3: Const( | |
|                         name: Identifier( | |
|                             name: __METHOD__ | |
|                         ) | |
|                         value: Scalar_LNumber( | |
|                             value: 4 | |
|                         ) | |
|                     ) | |
|                     4: Const( | |
|                         name: Identifier( | |
|                             name: __LINE__ | |
|                         ) | |
|                         value: Scalar_LNumber( | |
|                             value: 5 | |
|                         ) | |
|                     ) | |
|                     5: Const( | |
|                         name: Identifier( | |
|                             name: __FILE__ | |
|                         ) | |
|                         value: Scalar_LNumber( | |
|                             value: 6 | |
|                         ) | |
|                     ) | |
|                     6: Const( | |
|                         name: Identifier( | |
|                             name: __DIR__ | |
|                         ) | |
|                         value: Scalar_LNumber( | |
|                             value: 7 | |
|                         ) | |
|                     ) | |
|                     7: Const( | |
|                         name: Identifier( | |
|                             name: __NAMESPACE__ | |
|                         ) | |
|                         value: Scalar_LNumber( | |
|                             value: 8 | |
|                         ) | |
|                     ) | |
|                 ) | |
|             ) | |
|             8: Stmt_Nop( | |
|                 comments: array( | |
|                     0: // __halt_compiler does not work | |
|                 ) | |
|             ) | |
|         ) | |
|     ) | |
|     1: Stmt_Expression( | |
|         expr: Expr_Assign( | |
|             var: Expr_Variable( | |
|                 name: t | |
|             ) | |
|             expr: Expr_New( | |
|                 class: Name( | |
|                     parts: array( | |
|                         0: Test | |
|                     ) | |
|                 ) | |
|                 args: array( | |
|                 ) | |
|             ) | |
|         ) | |
|     ) | |
|     2: Stmt_Expression( | |
|         expr: Expr_MethodCall( | |
|             var: Expr_Variable( | |
|                 name: t | |
|             ) | |
|             name: Identifier( | |
|                 name: array | |
|             ) | |
|             args: array( | |
|             ) | |
|         ) | |
|     ) | |
|     3: Stmt_Expression( | |
|         expr: Expr_MethodCall( | |
|             var: Expr_Variable( | |
|                 name: t | |
|             ) | |
|             name: Identifier( | |
|                 name: public | |
|             ) | |
|             args: array( | |
|             ) | |
|         ) | |
|     ) | |
|     4: Stmt_Expression( | |
|         expr: Expr_StaticCall( | |
|             class: Name( | |
|                 parts: array( | |
|                     0: Test | |
|                 ) | |
|             ) | |
|             name: Identifier( | |
|                 name: list | |
|             ) | |
|             args: array( | |
|             ) | |
|         ) | |
|     ) | |
|     5: Stmt_Expression( | |
|         expr: Expr_StaticCall( | |
|             class: Name( | |
|                 parts: array( | |
|                     0: Test | |
|                 ) | |
|             ) | |
|             name: Identifier( | |
|                 name: protected | |
|             ) | |
|             args: array( | |
|             ) | |
|         ) | |
|     ) | |
|     6: Stmt_Expression( | |
|         expr: Expr_PropertyFetch( | |
|             var: Expr_Variable( | |
|                 name: t | |
|             ) | |
|             name: Identifier( | |
|                 name: class | |
|             ) | |
|         ) | |
|     ) | |
|     7: Stmt_Expression( | |
|         expr: Expr_PropertyFetch( | |
|             var: Expr_Variable( | |
|                 name: t | |
|             ) | |
|             name: Identifier( | |
|                 name: private | |
|             ) | |
|         ) | |
|     ) | |
|     8: Stmt_Expression( | |
|         expr: Expr_ClassConstFetch( | |
|             class: Name( | |
|                 parts: array( | |
|                     0: Test | |
|                 ) | |
|             ) | |
|             name: Identifier( | |
|                 name: TRAIT | |
|             ) | |
|         ) | |
|     ) | |
|     9: Stmt_Expression( | |
|         expr: Expr_ClassConstFetch( | |
|             class: Name( | |
|                 parts: array( | |
|                     0: Test | |
|                 ) | |
|             ) | |
|             name: Identifier( | |
|                 name: FINAL | |
|             ) | |
|         ) | |
|     ) | |
|     10: Stmt_Class( | |
|         flags: 0 | |
|         name: Identifier( | |
|             name: Foo | |
|         ) | |
|         extends: null | |
|         implements: array( | |
|         ) | |
|         stmts: array( | |
|             0: Stmt_TraitUse( | |
|                 traits: array( | |
|                     0: Name( | |
|                         parts: array( | |
|                             0: TraitA | |
|                         ) | |
|                     ) | |
|                     1: Name( | |
|                         parts: array( | |
|                             0: TraitB | |
|                         ) | |
|                     ) | |
|                 ) | |
|                 adaptations: array( | |
|                     0: Stmt_TraitUseAdaptation_Precedence( | |
|                         trait: Name( | |
|                             parts: array( | |
|                                 0: TraitA | |
|                             ) | |
|                         ) | |
|                         method: Identifier( | |
|                             name: catch | |
|                         ) | |
|                         insteadof: array( | |
|                             0: Name_Relative( | |
|                                 parts: array( | |
|                                     0: TraitB | |
|                                 ) | |
|                             ) | |
|                         ) | |
|                     ) | |
|                     1: Stmt_TraitUseAdaptation_Alias( | |
|                         trait: Name( | |
|                             parts: array( | |
|                                 0: TraitA | |
|                             ) | |
|                         ) | |
|                         method: Identifier( | |
|                             name: list | |
|                         ) | |
|                         newModifier: null | |
|                         newName: Identifier( | |
|                             name: foreach | |
|                         ) | |
|                     ) | |
|                     2: Stmt_TraitUseAdaptation_Alias( | |
|                         trait: Name( | |
|                             parts: array( | |
|                                 0: TraitB | |
|                             ) | |
|                         ) | |
|                         method: Identifier( | |
|                             name: throw | |
|                         ) | |
|                         newModifier: MODIFIER_PROTECTED (2) | |
|                         newName: Identifier( | |
|                             name: public | |
|                         ) | |
|                     ) | |
|                     3: Stmt_TraitUseAdaptation_Alias( | |
|                         trait: Name( | |
|                             parts: array( | |
|                                 0: TraitB | |
|                             ) | |
|                         ) | |
|                         method: Identifier( | |
|                             name: self | |
|                         ) | |
|                         newModifier: MODIFIER_PROTECTED (2) | |
|                         newName: null | |
|                     ) | |
|                     4: Stmt_TraitUseAdaptation_Alias( | |
|                         trait: null | |
|                         method: Identifier( | |
|                             name: exit | |
|                         ) | |
|                         newModifier: null | |
|                         newName: Identifier( | |
|                             name: die | |
|                         ) | |
|                     ) | |
|                     5: Stmt_TraitUseAdaptation_Alias( | |
|                         trait: Name_FullyQualified( | |
|                             parts: array( | |
|                                 0: TraitC | |
|                             ) | |
|                         ) | |
|                         method: Identifier( | |
|                             name: exit | |
|                         ) | |
|                         newModifier: null | |
|                         newName: Identifier( | |
|                             name: bye | |
|                         ) | |
|                     ) | |
|                     6: Stmt_TraitUseAdaptation_Alias( | |
|                         trait: Name_Relative( | |
|                             parts: array( | |
|                                 0: TraitC | |
|                             ) | |
|                         ) | |
|                         method: Identifier( | |
|                             name: exit | |
|                         ) | |
|                         newModifier: null | |
|                         newName: Identifier( | |
|                             name: byebye | |
|                         ) | |
|                     ) | |
|                     7: Stmt_TraitUseAdaptation_Precedence( | |
|                         trait: Name( | |
|                             parts: array( | |
|                                 0: TraitA | |
|                             ) | |
|                         ) | |
|                         method: Identifier( | |
|                             name: catch | |
|                             comments: array( | |
|                                 0: // | |
|                                 1: /** doc comment */ | |
|                                 2: # | |
|                             ) | |
|                         ) | |
|                         insteadof: array( | |
|                             0: Name( | |
|                                 parts: array( | |
|                                     0: TraitB | |
|                                 ) | |
|                             ) | |
|                         ) | |
|                     ) | |
|                 ) | |
|             ) | |
|         ) | |
|     ) | |
| ) |