Skip to content
This repository was archived by the owner on Jan 29, 2020. It is now read-only.

Commit 3249291

Browse files
committed
Merge branch 'develop'
2 parents 2441024 + f0f6e5f commit 3249291

File tree

5 files changed

+99
-31
lines changed

5 files changed

+99
-31
lines changed

doc/book/generator/reference.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@ class Zend\Code\Generator\ParameterGenerator extends Zend\Code\Generator\Abstrac
358358
public function getPassedByReference()
359359
public function setPassedByReference($passedByReference)
360360
public function generate()
361+
public function omitDefaultValue()
361362
}
362363
```
363364

@@ -399,5 +400,6 @@ class Zend\Code\Generator\PropertyGenerator
399400
public function setDefaultValue($defaultValue)
400401
public function getDefaultValue()
401402
public function generate()
403+
public function omitDefaultValue()
402404
}
403405
```

src/Generator/ParameterGenerator.php

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ class ParameterGenerator extends AbstractGenerator
4949
*/
5050
private $variadic = false;
5151

52+
/**
53+
* @var bool
54+
*/
55+
private $omitDefaultValue = false;
56+
5257
/**
5358
* @param ParameterReflection $reflectionParameter
5459
* @return ParameterGenerator
@@ -85,14 +90,15 @@ public static function fromReflection(ParameterReflection $reflectionParameter)
8590
/**
8691
* Generate from array
8792
*
88-
* @configkey name string [required] Class Name
89-
* @configkey type string
90-
* @configkey defaultvalue null|bool|string|int|float|array|ValueGenerator
91-
* @configkey passedbyreference bool
92-
* @configkey position int
93-
* @configkey sourcedirty bool
94-
* @configkey indentation string
95-
* @configkey sourcecontent string
93+
* @configkey name string [required] Class Name
94+
* @configkey type string
95+
* @configkey defaultvalue null|bool|string|int|float|array|ValueGenerator
96+
* @configkey passedbyreference bool
97+
* @configkey position int
98+
* @configkey sourcedirty bool
99+
* @configkey indentation string
100+
* @configkey sourcecontent string
101+
* @configkey omitdefaultvalue bool
96102
*
97103
* @throws Exception\InvalidArgumentException
98104
* @param array $array
@@ -131,6 +137,9 @@ public static function fromArray(array $array)
131137
case 'sourcecontent':
132138
$param->setSourceContent($value);
133139
break;
140+
case 'omitdefaultvalue':
141+
$param->omitDefaultValue($value);
142+
break;
134143
}
135144
}
136145

@@ -306,6 +315,10 @@ public function generate()
306315

307316
$output .= '$' . $this->name;
308317

318+
if ($this->omitDefaultValue) {
319+
return $output;
320+
}
321+
309322
if ($this->defaultValue instanceof ValueGenerator) {
310323
$output .= ' = ';
311324
$this->defaultValue->setOutputMode(ValueGenerator::OUTPUT_SINGLE_LINE);
@@ -396,4 +409,15 @@ private function generateTypeHint()
396409

397410
return $this->type->generate() . ' ';
398411
}
412+
413+
/**
414+
* @param bool $omit
415+
* @return ParameterGenerator
416+
*/
417+
public function omitDefaultValue(bool $omit = true)
418+
{
419+
$this->omitDefaultValue = $omit;
420+
421+
return $this;
422+
}
399423
}

src/Generator/PropertyGenerator.php

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ class PropertyGenerator extends AbstractMemberGenerator
2929
*/
3030
protected $defaultValue;
3131

32+
/**
33+
* @var bool
34+
*/
35+
private $omitDefaultValue = false;
36+
3237
/**
3338
* @param PropertyReflection $reflectionProperty
3439
* @return PropertyGenerator
@@ -67,14 +72,15 @@ public static function fromReflection(PropertyReflection $reflectionProperty)
6772
/**
6873
* Generate from array
6974
*
70-
* @configkey name string [required] Class Name
71-
* @configkey const bool
72-
* @configkey defaultvalue null|bool|string|int|float|array|ValueGenerator
73-
* @configkey flags int
74-
* @configkey abstract bool
75-
* @configkey final bool
76-
* @configkey static bool
77-
* @configkey visibility string
75+
* @configkey name string [required] Class Name
76+
* @configkey const bool
77+
* @configkey defaultvalue null|bool|string|int|float|array|ValueGenerator
78+
* @configkey flags int
79+
* @configkey abstract bool
80+
* @configkey final bool
81+
* @configkey static bool
82+
* @configkey visibility string
83+
* @configkey omitdefaultvalue bool
7884
*
7985
* @throws Exception\InvalidArgumentException
8086
* @param array $array
@@ -117,6 +123,9 @@ public static function fromArray(array $array)
117123
case 'visibility':
118124
$property->setVisibility($value);
119125
break;
126+
case 'omitdefaultvalue':
127+
$property->omitDefaultValue($value);
128+
break;
120129
}
121130
}
122131

@@ -220,14 +229,27 @@ public function generate()
220229
}
221230
$output .= $this->indentation . 'const ' . $name . ' = '
222231
. ($defaultValue !== null ? $defaultValue->generate() : 'null;');
223-
} else {
224-
$output .= $this->indentation
225-
. $this->getVisibility()
226-
. ($this->isStatic() ? ' static' : '')
227-
. ' $' . $name . ' = '
228-
. ($defaultValue !== null ? $defaultValue->generate() : 'null;');
232+
233+
return $output;
229234
}
230235

231-
return $output;
236+
$output .= $this->indentation . $this->getVisibility() . ($this->isStatic() ? ' static' : '') . ' $' . $name;
237+
238+
if ($this->omitDefaultValue) {
239+
return $output . ';';
240+
}
241+
242+
return $output . ' = ' . ($defaultValue !== null ? $defaultValue->generate() : 'null;');
243+
}
244+
245+
/**
246+
* @param bool $omit
247+
* @return PropertyGenerator
248+
*/
249+
public function omitDefaultValue(bool $omit = true)
250+
{
251+
$this->omitDefaultValue = $omit;
252+
253+
return $this;
232254
}
233255
}

test/Generator/ParameterGeneratorTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ public function testCreateFromArray()
217217
'sourcedirty' => false,
218218
'sourcecontent' => 'foo',
219219
'indentation' => '-',
220+
'omitdefaultvalue' => true,
220221
]);
221222

222223
self::assertEquals('SampleParameter', $parameterGenerator->getName());
@@ -227,6 +228,7 @@ public function testCreateFromArray()
227228
self::assertFalse($parameterGenerator->isSourceDirty());
228229
self::assertEquals('foo', $parameterGenerator->getSourceContent());
229230
self::assertEquals('-', $parameterGenerator->getIndentation());
231+
self::assertAttributeEquals(true, 'omitDefaultValue', $parameterGenerator);
230232
}
231233

232234
/**
@@ -582,4 +584,12 @@ public function testGetInternalClassDefaultParameterValue()
582584

583585
self::assertSame('null', strtolower((string) $parameter->getDefaultValue()));
584586
}
587+
588+
public function testOmitType()
589+
{
590+
$parameter = new ParameterGenerator('foo', 'string', 'bar');
591+
$parameter->omitDefaultValue();
592+
593+
self::assertEquals('string $foo', $parameter->generate());
594+
}
585595
}

test/Generator/PropertyGeneratorTest.php

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -223,16 +223,17 @@ public function testOtherTypesThrowExceptionOnGenerate() : void
223223
public function testCreateFromArray() : void
224224
{
225225
$propertyGenerator = PropertyGenerator::fromArray([
226-
'name' => 'SampleProperty',
227-
'const' => true,
228-
'defaultvalue' => 'foo',
229-
'docblock' => [
226+
'name' => 'SampleProperty',
227+
'const' => true,
228+
'defaultvalue' => 'foo',
229+
'docblock' => [
230230
'shortdescription' => 'foo',
231231
],
232-
'abstract' => true,
233-
'final' => true,
234-
'static' => true,
235-
'visibility' => PropertyGenerator::VISIBILITY_PROTECTED,
232+
'abstract' => true,
233+
'final' => true,
234+
'static' => true,
235+
'visibility' => PropertyGenerator::VISIBILITY_PROTECTED,
236+
'omitdefaultvalue' => true,
236237
]);
237238

238239
self::assertEquals('SampleProperty', $propertyGenerator->getName());
@@ -243,6 +244,7 @@ public function testCreateFromArray() : void
243244
self::assertTrue($propertyGenerator->isFinal());
244245
self::assertTrue($propertyGenerator->isStatic());
245246
self::assertEquals(PropertyGenerator::VISIBILITY_PROTECTED, $propertyGenerator->getVisibility());
247+
self::assertAttributeEquals(true, 'omitDefaultValue', $propertyGenerator);
246248
}
247249

248250
/**
@@ -281,4 +283,12 @@ public function testSetDefaultValue(string $type, $value) : void
281283
self::assertEquals($type, $property->getDefaultValue()->getType());
282284
self::assertEquals($value, $property->getDefaultValue()->getValue());
283285
}
286+
287+
public function testOmitType()
288+
{
289+
$property = new PropertyGenerator('foo', null);
290+
$property->omitDefaultValue();
291+
292+
self::assertEquals(' public $foo;', $property->generate());
293+
}
284294
}

0 commit comments

Comments
 (0)