@@ -199,39 +199,35 @@ private function generateSignature(\ReflectionClass $class): iterable
199
199
$ parametersWithUndefinedConstants [$ p ->name ] = true ;
200
200
}
201
201
202
- if (!$ parametersWithUndefinedConstants ) {
203
- yield preg_replace ('/^ @@.*/m ' , '' , $ m );
204
- } else {
205
- $ t = $ m ->getReturnType ();
206
- $ stack = [
207
- $ m ->getDocComment (),
208
- $ m ->getName (),
209
- $ m ->isAbstract (),
210
- $ m ->isFinal (),
211
- $ m ->isStatic (),
212
- $ m ->isPublic (),
213
- $ m ->isPrivate (),
214
- $ m ->isProtected (),
215
- $ m ->returnsReference (),
216
- $ t instanceof \ReflectionNamedType ? ((string ) $ t ->allowsNull ()).$ t ->getName () : (string ) $ t ,
217
- ];
218
-
219
- foreach ($ m ->getParameters () as $ p ) {
220
- if (!isset ($ parametersWithUndefinedConstants [$ p ->name ])) {
221
- $ stack [] = (string ) $ p ;
222
- } else {
223
- $ t = $ p ->getType ();
224
- $ stack [] = $ p ->isOptional ();
225
- $ stack [] = $ t instanceof \ReflectionNamedType ? ((string ) $ t ->allowsNull ()).$ t ->getName () : (string ) $ t ;
226
- $ stack [] = $ p ->isPassedByReference ();
227
- $ stack [] = $ p ->isVariadic ();
228
- $ stack [] = $ p ->getName ();
229
- }
230
- }
202
+ $ t = $ m ->getReturnType ();
203
+ $ stack = [
204
+ $ m ->getDocComment (),
205
+ $ m ->getName (),
206
+ $ m ->isAbstract (),
207
+ $ m ->isFinal (),
208
+ $ m ->isStatic (),
209
+ $ m ->isPublic (),
210
+ $ m ->isPrivate (),
211
+ $ m ->isProtected (),
212
+ $ m ->returnsReference (),
213
+ $ t instanceof \ReflectionNamedType ? ((string ) $ t ->allowsNull ()).$ t ->getName () : (string ) $ t ,
214
+ ];
231
215
232
- yield implode (', ' , $ stack );
216
+ foreach ($ m ->getParameters () as $ p ) {
217
+ if (!isset ($ parametersWithUndefinedConstants [$ p ->name ])) {
218
+ $ stack [] = $ this ->extractParameterData ($ p );
219
+ } else {
220
+ $ t = $ p ->getType ();
221
+ $ stack [] = $ p ->isOptional ();
222
+ $ stack [] = $ t instanceof \ReflectionNamedType ? ((string ) $ t ->allowsNull ()).$ t ->getName () : (string ) $ t ;
223
+ $ stack [] = $ p ->isPassedByReference ();
224
+ $ stack [] = $ p ->isVariadic ();
225
+ $ stack [] = $ p ->getName ();
226
+ }
233
227
}
234
228
229
+ yield implode (', ' , $ stack );
230
+
235
231
yield print_r ($ defaults , true );
236
232
}
237
233
@@ -259,4 +255,34 @@ private function generateSignature(\ReflectionClass $class): iterable
259
255
yield print_r ($ class ->name ::getSubscribedServices (), true );
260
256
}
261
257
}
258
+
259
+ private function extractParameterData (\ReflectionParameter $ p ): string
260
+ {
261
+ if (false === $ p ->isOptional ()) {
262
+ return (string ) $ p ;
263
+ }
264
+
265
+ if (false === $ p ->isDefaultValueAvailable ()) {
266
+ return (string ) $ p ;
267
+ }
268
+
269
+ $ defaultValue = $ p ->getDefaultValue ();
270
+ if (false === \is_object ($ defaultValue )) {
271
+ return (string ) $ p ;
272
+ }
273
+
274
+ $ class = \get_class ($ defaultValue );
275
+ $ type = $ p ->getType ();
276
+
277
+ if (null === $ type ) {
278
+ return 'untyped = ' .$ class ;
279
+ }
280
+
281
+ $ typeName = (string ) $ type ;
282
+ if ($ type instanceof \ReflectionNamedType) {
283
+ $ typeName = $ type ->getName ();
284
+ }
285
+
286
+ return $ typeName .' = ' .$ class ;
287
+ }
262
288
}
0 commit comments