1Property promotion
2-----
3<?php
4
5class Point {
6    public function __construct(
7        public float $x = 0.0,
8        protected array $y = [],
9        private string $z = 'hello',
10        public readonly int $a = 0,
11    ) {}
12}
13-----
14array(
15    0: Stmt_Class(
16        attrGroups: array(
17        )
18        flags: 0
19        name: Identifier(
20            name: Point
21        )
22        extends: null
23        implements: array(
24        )
25        stmts: array(
26            0: Stmt_ClassMethod(
27                attrGroups: array(
28                )
29                flags: PUBLIC (1)
30                byRef: false
31                name: Identifier(
32                    name: __construct
33                )
34                params: array(
35                    0: Param(
36                        attrGroups: array(
37                        )
38                        flags: PUBLIC (1)
39                        type: Identifier(
40                            name: float
41                        )
42                        byRef: false
43                        variadic: false
44                        var: Expr_Variable(
45                            name: x
46                        )
47                        default: Scalar_Float(
48                            value: 0
49                        )
50                    )
51                    1: Param(
52                        attrGroups: array(
53                        )
54                        flags: PROTECTED (2)
55                        type: Identifier(
56                            name: array
57                        )
58                        byRef: false
59                        variadic: false
60                        var: Expr_Variable(
61                            name: y
62                        )
63                        default: Expr_Array(
64                            items: array(
65                            )
66                        )
67                    )
68                    2: Param(
69                        attrGroups: array(
70                        )
71                        flags: PRIVATE (4)
72                        type: Identifier(
73                            name: string
74                        )
75                        byRef: false
76                        variadic: false
77                        var: Expr_Variable(
78                            name: z
79                        )
80                        default: Scalar_String(
81                            value: hello
82                        )
83                    )
84                    3: Param(
85                        attrGroups: array(
86                        )
87                        flags: PUBLIC | READONLY (65)
88                        type: Identifier(
89                            name: int
90                        )
91                        byRef: false
92                        variadic: false
93                        var: Expr_Variable(
94                            name: a
95                        )
96                        default: Scalar_Int(
97                            value: 0
98                        )
99                    )
100                )
101                returnType: null
102                stmts: array(
103                )
104            )
105        )
106    )
107)
108