@@ -48,45 +48,45 @@ var_dump($type);
48
48
Expected Output:
49
49
50
50
``` php
51
- TypeLang\Parser\Node\Stmt\NamedTypeNode {#739
51
+ TypeLang\Parser\Node\Stmt\NamedTypeNode {
52
52
+offset: 0
53
- +name: TypeLang\Parser\Node\Name {#737
53
+ +name: TypeLang\Parser\Node\Name {
54
54
+offset: 0
55
55
-parts: array:1 [
56
- 0 => TypeLang\Parser\Node\Identifier {#746
56
+ 0 => TypeLang\Parser\Node\Identifier {
57
57
+offset: 0
58
58
+value: "array"
59
59
}
60
60
]
61
61
}
62
62
+arguments: null
63
- +fields: TypeLang\Parser\Node\Stmt\Shape\FieldsListNode {#757
63
+ +fields: TypeLang\Parser\Node\Stmt\Shape\FieldsListNode {
64
64
+offset: 11
65
65
+items: array:1 [
66
- 0 => TypeLang\Parser\Node\Stmt\Shape\NamedFieldNode {#346
66
+ 0 => TypeLang\Parser\Node\Stmt\Shape\NamedFieldNode {
67
67
+offset: 11
68
- +type: TypeLang\Parser\Node\Stmt\CallableTypeNode {#339
68
+ +type: TypeLang\Parser\Node\Stmt\CallableTypeNode {
69
69
+offset: 16
70
- +name: TypeLang\Parser\Node\Name {#313
70
+ +name: TypeLang\Parser\Node\Name {
71
71
+offset: 16
72
72
-parts: array:1 [
73
- 0 => TypeLang\Parser\Node\Identifier {#332
73
+ 0 => TypeLang\Parser\Node\Identifier {
74
74
+offset: 16
75
75
+value: "callable"
76
76
}
77
77
]
78
78
}
79
- +parameters: TypeLang\Parser\Node\Stmt\Callable\ParametersListNode {#318
79
+ +parameters: TypeLang\Parser\Node\Stmt\Callable\ParametersListNode {
80
80
+offset: 25
81
81
+items: array:2 [
82
- 0 => TypeLang\Parser\Node\Stmt\Callable\ParameterNode {#315
82
+ 0 => TypeLang\Parser\Node\Stmt\Callable\ParameterNode {
83
83
+offset: 25
84
- +type: TypeLang\Parser\Node\Stmt\NamedTypeNode {#304
84
+ +type: TypeLang\Parser\Node\Stmt\NamedTypeNode {
85
85
+offset: 25
86
- +name: TypeLang\Parser\Node\Name {#242
86
+ +name: TypeLang\Parser\Node\Name {
87
87
+offset: 25
88
88
-parts: array:1 [
89
- 0 => TypeLang\Parser\Node\Identifier {#311
89
+ 0 => TypeLang\Parser\Node\Identifier {
90
90
+offset: 25
91
91
+value: "Example"
92
92
}
@@ -100,14 +100,14 @@ TypeLang\Parser\Node\Stmt\NamedTypeNode {#739
100
100
+variadic: false
101
101
+optional: false
102
102
}
103
- 1 => TypeLang\Parser\Node\Stmt\Callable\ParameterNode {#330
103
+ 1 => TypeLang\Parser\Node\Stmt\Callable\ParameterNode {
104
104
+offset: 34
105
- +type: TypeLang\Parser\Node\Stmt\NamedTypeNode {#312
105
+ +type: TypeLang\Parser\Node\Stmt\NamedTypeNode {
106
106
+offset: 34
107
- +name: TypeLang\Parser\Node\Name {#284
107
+ +name: TypeLang\Parser\Node\Name {
108
108
+offset: 34
109
109
-parts: array:1 [
110
- 0 => TypeLang\Parser\Node\Identifier {#298
110
+ 0 => TypeLang\Parser\Node\Identifier {
111
111
+offset: 34
112
112
+value: "int"
113
113
}
@@ -123,12 +123,12 @@ TypeLang\Parser\Node\Stmt\NamedTypeNode {#739
123
123
}
124
124
]
125
125
}
126
- +type: TypeLang\Parser\Node\Stmt\NamedTypeNode {#287
126
+ +type: TypeLang\Parser\Node\Stmt\NamedTypeNode {
127
127
+offset: 40
128
- +name: TypeLang\Parser\Node\Name {#314
128
+ +name: TypeLang\Parser\Node\Name {
129
129
+offset: 40
130
130
-parts: array:1 [
131
- 0 => TypeLang\Parser\Node\Identifier {#307
131
+ 0 => TypeLang\Parser\Node\Identifier {
132
132
+offset: 40
133
133
+value: "mixed"
134
134
}
@@ -139,7 +139,7 @@ TypeLang\Parser\Node\Stmt\NamedTypeNode {#739
139
139
}
140
140
}
141
141
+optional: false
142
- +key: TypeLang\Parser\Node\Identifier {#371
142
+ +key: TypeLang\Parser\Node\Identifier {
143
143
+offset: 11
144
144
+value: "key"
145
145
}
@@ -150,81 +150,6 @@ TypeLang\Parser\Node\Stmt\NamedTypeNode {#739
150
150
}
151
151
```
152
152
153
- ### Array Normalization
154
-
155
- ``` php
156
- $parser = new \TypeLang\Parser\Parser();
157
-
158
- $type = $parser->parse(<<<'PHP'
159
- array{
160
- key: callable(Example, int): mixed,
161
- ...
162
- }
163
- PHP);
164
-
165
- var_dump($type->toArray());
166
- ```
167
-
168
- Expected Output:
169
-
170
- ``` php
171
- array:3 [
172
- "kind" => TypeLang\Parser\Node\Stmt\TypeKind {#773
173
- +name: "TYPE_KIND"
174
- +value: 1
175
- }
176
- "name" => "array"
177
- "fields" => array:2 [
178
- "items" => array:1 [
179
- 0 => array:4 [
180
- "kind" => TypeLang\Parser\Node\Stmt\Shape\ShapeFieldKind {#733
181
- +name: "NAMED_FIELD_KIND"
182
- +value: 1
183
- }
184
- "type" => array:4 [
185
- "kind" => TypeLang\Parser\Node\Stmt\TypeKind {#741
186
- +name: "CALLABLE_KIND"
187
- +value: 2
188
- }
189
- "name" => "callable"
190
- "parameters" => array:1 [
191
- "items" => array:2 [
192
- 0 => array:5 [
193
- "name" => null
194
- "type" => array:2 [
195
- "kind" => TypeLang\Parser\Node\Stmt\TypeKind {#773}
196
- "name" => "Example"
197
- ]
198
- "output" => false
199
- "variadic" => false
200
- "optional" => false
201
- ]
202
- 1 => array:5 [
203
- "name" => null
204
- "type" => array:2 [
205
- "kind" => TypeLang\Parser\Node\Stmt\TypeKind {#773}
206
- "name" => "int"
207
- ]
208
- "output" => false
209
- "variadic" => false
210
- "optional" => false
211
- ]
212
- ]
213
- ]
214
- "type" => array:2 [
215
- "kind" => TypeLang\Parser\Node\Stmt\TypeKind {#773}
216
- "name" => "mixed"
217
- ]
218
- ]
219
- "optional" => false
220
- "key" => "key"
221
- ]
222
- ]
223
- "sealed" => false
224
- ]
225
- ]
226
- ```
227
-
228
153
### JSON Serialization
229
154
230
155
@@ -238,38 +163,36 @@ $type = $parser->parse(<<<'PHP'
238
163
}
239
164
PHP);
240
165
241
- echo json_encode($type);
166
+ echo json_encode($type, JSON_PRETTY_PRINT );
242
167
```
243
168
244
169
Expected Output:
245
170
246
171
``` json
247
172
{
248
- "kind" : 1 ,
173
+ "kind" : 257 ,
249
174
"name" : " array" ,
250
175
"fields" : {
251
176
"items" : [
252
177
{
253
- "kind" : 1 ,
178
+ "kind" : 513 ,
254
179
"type" : {
255
- "kind" : 2 ,
180
+ "kind" : 258 ,
256
181
"name" : " callable" ,
257
182
"parameters" : {
258
183
"items" : [
259
184
{
260
- "name" : null ,
261
185
"type" : {
262
- "kind" : 1 ,
186
+ "kind" : 257 ,
263
187
"name" : " Example"
264
188
},
265
189
"output" : false ,
266
190
"variadic" : false ,
267
191
"optional" : false
268
192
},
269
193
{
270
- "name" : null ,
271
194
"type" : {
272
- "kind" : 1 ,
195
+ "kind" : 257 ,
273
196
"name" : " int"
274
197
},
275
198
"output" : false ,
@@ -279,7 +202,7 @@ Expected Output:
279
202
]
280
203
},
281
204
"type" : {
282
- "kind" : 1 ,
205
+ "kind" : 257 ,
283
206
"name" : " mixed"
284
207
}
285
208
},
0 commit comments