5
5
*/
6
6
namespace Magento \Framework \Code \Generator ;
7
7
8
+ use Zend \Code \Generator \ValueGenerator ;
9
+
8
10
abstract class EntityAbstract
9
11
{
10
12
/**
@@ -293,11 +295,64 @@ protected function _fixCodeStyle($sourceCode)
293
295
/**
294
296
* Get value generator for null default value
295
297
*
296
- * @return \Zend\Code\Generator\ ValueGenerator
298
+ * @return ValueGenerator
297
299
*/
298
300
protected function _getNullDefaultValue ()
299
301
{
300
- $ value = new \Zend \Code \Generator \ValueGenerator (null , \Zend \Code \Generator \ValueGenerator::TYPE_NULL );
302
+ $ value = new ValueGenerator (null , ValueGenerator::TYPE_NULL );
303
+
304
+ return $ value ;
305
+ }
306
+
307
+ /**
308
+ * @param \ReflectionParameter $parameter
309
+ *
310
+ * @return null|string
311
+ */
312
+ private function extractParameterType (
313
+ \ReflectionParameter $ parameter
314
+ ): ?string {
315
+ /** @var string|null $typeName */
316
+ $ typeName = null ;
317
+ if ($ parameter ->hasType ()) {
318
+ if ($ parameter ->isArray ()) {
319
+ $ typeName = 'array ' ;
320
+ } elseif ($ parameter ->getClass ()) {
321
+ $ typeName = $ this ->_getFullyQualifiedClassName (
322
+ $ parameter ->getClass ()->getName ()
323
+ );
324
+ } elseif ($ parameter ->isCallable ()) {
325
+ $ typeName = 'callable ' ;
326
+ } else {
327
+ $ typeName = $ parameter ->getType ()->getName ();
328
+ }
329
+
330
+ if ($ parameter ->allowsNull ()) {
331
+ $ typeName = '? ' .$ typeName ;
332
+ }
333
+ }
334
+
335
+ return $ typeName ;
336
+ }
337
+
338
+ /**
339
+ * @param \ReflectionParameter $parameter
340
+ *
341
+ * @return null|ValueGenerator
342
+ */
343
+ private function extractParameterDefaultValue (
344
+ \ReflectionParameter $ parameter
345
+ ): ?ValueGenerator {
346
+ /** @var ValueGenerator|null $value */
347
+ $ value = null ;
348
+ if ($ parameter ->isOptional () && $ parameter ->isDefaultValueAvailable ()) {
349
+ $ valueType = ValueGenerator::TYPE_AUTO ;
350
+ $ defaultValue = $ parameter ->getDefaultValue ();
351
+ if ($ defaultValue === null ) {
352
+ $ valueType = ValueGenerator::TYPE_NULL ;
353
+ }
354
+ $ value = new ValueGenerator ($ defaultValue , $ valueType );
355
+ }
301
356
302
357
return $ value ;
303
358
}
@@ -313,32 +368,13 @@ protected function _getMethodParameterInfo(\ReflectionParameter $parameter)
313
368
$ parameterInfo = [
314
369
'name ' => $ parameter ->getName (),
315
370
'passedByReference ' => $ parameter ->isPassedByReference (),
316
- 'type ' => $ parameter ->hasType ()
317
- ? $ parameter ->getType ()->getName () : null ,
318
371
'variadic ' => $ parameter ->isVariadic ()
319
372
];
320
-
321
- if ($ parameter ->isArray ()) {
322
- $ parameterInfo ['type ' ] = 'array ' ;
323
- } elseif ($ parameter ->getClass ()) {
324
- $ parameterInfo ['type ' ] = $ this ->_getFullyQualifiedClassName ($ parameter ->getClass ()->getName ());
325
- } elseif ($ parameter ->isCallable ()) {
326
- $ parameterInfo ['type ' ] = 'callable ' ;
327
- }
328
-
329
- if ($ parameter ->isOptional () && $ parameter ->isDefaultValueAvailable ()) {
330
- $ defaultValue = $ parameter ->getDefaultValue ();
331
- if (is_string ($ defaultValue )) {
332
- $ parameterInfo ['defaultValue ' ] = $ parameter ->getDefaultValue ();
333
- } elseif ($ defaultValue === null ) {
334
- $ parameterInfo ['defaultValue ' ] = $ this ->_getNullDefaultValue ();
335
- } else {
336
- $ parameterInfo ['defaultValue ' ] = $ defaultValue ;
337
- }
373
+ if ($ type = $ this ->extractParameterType ($ parameter )) {
374
+ $ parameterInfo ['type ' ] = $ type ;
338
375
}
339
-
340
- if ($ parameter ->allowsNull () && $ parameterInfo ['type ' ]) {
341
- $ parameterInfo ['type ' ] = '? ' .$ parameterInfo ['type ' ];
376
+ if ($ default = $ this ->extractParameterDefaultValue ($ parameter )) {
377
+ $ parameterInfo ['defaultValue ' ] = $ default ;
342
378
}
343
379
344
380
return $ parameterInfo ;
0 commit comments