Anonymous classes ----- <?php new class { public function test() {} }; new class extends A implements B, C {}; new class() { public $foo; }; new class($a, $b) extends A { use T; }; class A { public function test() { return new class($this) extends A { const A = 'B'; }; } } ----- array( 0: Stmt_Expression( expr: Expr_New( class: Stmt_Class( flags: 0 name: null extends: null implements: array( ) stmts: array( 0: Stmt_ClassMethod( flags: MODIFIER_PUBLIC (1) byRef: false name: Identifier( name: test ) params: array( ) returnType: null stmts: array( ) ) ) ) args: array( ) ) ) 1: Stmt_Expression( expr: Expr_New( class: Stmt_Class( flags: 0 name: null extends: Name( parts: array( 0: A ) ) implements: array( 0: Name( parts: array( 0: B ) ) 1: Name( parts: array( 0: C ) ) ) stmts: array( ) ) args: array( ) ) ) 2: Stmt_Expression( expr: Expr_New( class: Stmt_Class( flags: 0 name: null extends: null implements: array( ) stmts: array( 0: Stmt_Property( flags: MODIFIER_PUBLIC (1) type: null props: array( 0: Stmt_PropertyProperty( name: VarLikeIdentifier( name: foo ) default: null ) ) ) ) ) args: array( ) ) ) 3: Stmt_Expression( expr: Expr_New( class: Stmt_Class( flags: 0 name: null extends: Name( parts: array( 0: A ) ) implements: array( ) stmts: array( 0: Stmt_TraitUse( traits: array( 0: Name( parts: array( 0: T ) ) ) adaptations: array( ) ) ) ) args: array( 0: Arg( value: Expr_Variable( name: a ) byRef: false unpack: false ) 1: Arg( value: Expr_Variable( name: b ) byRef: false unpack: false ) ) ) ) 4: Stmt_Class( flags: 0 name: Identifier( name: A ) extends: null implements: array( ) stmts: array( 0: Stmt_ClassMethod( flags: MODIFIER_PUBLIC (1) byRef: false name: Identifier( name: test ) params: array( ) returnType: null stmts: array( 0: Stmt_Return( expr: Expr_New( class: Stmt_Class( flags: 0 name: null extends: Name( parts: array( 0: A ) ) implements: array( ) stmts: array( 0: Stmt_ClassConst( flags: 0 consts: array( 0: Const( name: Identifier( name: A ) value: Scalar_String( value: B ) ) ) ) ) ) args: array( 0: Arg( value: Expr_Variable( name: this ) byRef: false unpack: false ) ) ) ) ) ) ) ) )