Identifier node mode ----- bar; $foo->bar(); Foo::bar(); "$foo->bar"; $foo; Foo::$bar; Foo::$$bar; ----- !!ident array( 0: Stmt_Use( type: TYPE_NORMAL (1) uses: array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( parts: array( 0: Foo ) ) alias: Identifier( name: Bar ) ) ) ) 1: Stmt_Class( flags: 0 name: Identifier( name: Foo ) extends: null implements: array( ) stmts: array( 0: Stmt_ClassConst( flags: 0 consts: array( 0: Const( name: Identifier( name: BAR ) value: Scalar_LNumber( value: 1 ) ) ) ) 1: Stmt_ClassMethod( flags: 0 byRef: false name: Identifier( name: foo ) params: array( ) returnType: null stmts: array( ) ) 2: Stmt_TraitUse( traits: array( 0: Name( parts: array( 0: A ) ) 1: Name( parts: array( 0: B ) ) ) adaptations: array( 0: Stmt_TraitUseAdaptation_Alias( trait: Name( parts: array( 0: A ) ) method: Identifier( name: b ) newModifier: null newName: Identifier( name: c ) ) 1: Stmt_TraitUseAdaptation_Alias( trait: null method: Identifier( name: d ) newModifier: MODIFIER_PUBLIC (1) newName: Identifier( name: e ) ) ) ) 3: Stmt_Property( flags: MODIFIER_PUBLIC (1) props: array( 0: Stmt_PropertyProperty( name: VarLikeIdentifier( name: foo ) default: null ) 1: Stmt_PropertyProperty( name: VarLikeIdentifier( name: bar ) default: Scalar_LNumber( value: 42 ) ) ) ) ) ) 2: Stmt_Interface( name: Identifier( name: Bar ) extends: array( ) stmts: array( ) ) 3: Stmt_Trait( name: Identifier( name: Baz ) stmts: array( ) ) 4: Stmt_Function( byRef: false name: Identifier( name: foo ) params: array( 0: Param( type: Identifier( name: array ) byRef: false variadic: false name: x default: null ) ) returnType: Identifier( name: callable ) stmts: array( ) ) 5: Stmt_Const( consts: array( 0: Const( name: Identifier( name: FOO ) value: Scalar_LNumber( value: 1 ) ) ) ) 6: Stmt_Declare( declares: array( 0: Stmt_DeclareDeclare( key: Identifier( name: foo ) value: Scalar_LNumber( value: 1 ) ) ) stmts: null ) 7: Stmt_Label( name: Identifier( name: foo ) ) 8: Stmt_Goto( name: Identifier( name: foo ) ) 9: Expr_ClassConstFetch( class: Name( parts: array( 0: Foo ) ) name: Identifier( name: BAR ) ) 10: Expr_PropertyFetch( var: Expr_Variable( name: foo ) name: Identifier( name: bar ) ) 11: Expr_MethodCall( var: Expr_Variable( name: foo ) name: Identifier( name: bar ) args: array( ) ) 12: Expr_StaticCall( class: Name( parts: array( 0: Foo ) ) name: Identifier( name: bar ) args: array( ) ) 13: Scalar_Encapsed( parts: array( 0: Expr_PropertyFetch( var: Expr_Variable( name: foo ) name: Identifier( name: bar ) ) ) ) 14: Expr_Variable( name: foo ) 15: Expr_StaticPropertyFetch( class: Name( parts: array( 0: Foo ) ) name: VarLikeIdentifier( name: bar ) ) 16: Expr_StaticPropertyFetch( class: Name( parts: array( 0: Foo ) ) name: Expr_Variable( name: bar ) ) ) -----