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

Commit d19970e

Browse files
committed
Merge branch 'fix/#95-non-optional-parameters-can-be-nullable'
Close #95
2 parents ee170a8 + 71db5ec commit d19970e

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

src/Generator/ParameterGenerator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public static function fromReflection(ParameterReflection $reflectionParameter)
6363

6464
$param->setVariadic($variadic);
6565

66-
if (! $variadic && $reflectionParameter->isOptional()) {
66+
if (! $variadic && ($reflectionParameter->isOptional() || $reflectionParameter->isDefaultValueAvailable())) {
6767
try {
6868
$param->setDefaultValue($reflectionParameter->getDefaultValue());
6969
} catch (\ReflectionException $e) {

test/Generator/ParameterGeneratorTest.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111

1212
use Zend\Code\Generator\ParameterGenerator;
1313
use Zend\Code\Generator\ValueGenerator;
14+
use Zend\Code\Reflection\MethodReflection;
1415
use Zend\Code\Reflection\ParameterReflection;
16+
use ZendTest\Code\Generator\TestAsset\ParameterClass;
1517
use ZendTest\Code\TestAsset\ClassTypeHintedClass;
1618
use ZendTest\Code\TestAsset\DocBlockOnlyHintsClass;
1719
use ZendTest\Code\TestAsset\InternalHintsClass;
@@ -98,6 +100,22 @@ public function testFromReflectionGetDefaultValue()
98100
$this->assertEquals('\'foo\'', (string) $defaultValue);
99101
}
100102

103+
/**
104+
* @group 95
105+
*/
106+
public function testFromReflectionGetDefaultValueNotOptional()
107+
{
108+
$method = new MethodReflection(ParameterClass::class, 'defaultObjectEqualsNullAndNotOptional');
109+
110+
$params = $method->getParameters();
111+
112+
$this->assertCount(2, $params);
113+
114+
$firstParameter = ParameterGenerator::fromReflection($params[0]);
115+
$this->assertInstanceOf(ValueGenerator::class, $firstParameter->getDefaultValue());
116+
$this->assertNull($firstParameter->getDefaultValue()->getSourceContent());
117+
}
118+
101119
public function testFromReflectionGetArrayHint()
102120
{
103121
$reflectionParameter = $this->getFirstReflectionParameter('fromArray');

test/Generator/TestAsset/ParameterClass.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ public function defaultConstant($con = self::FOO)
8282

8383
}
8484

85+
public function defaultObjectEqualsNullAndNotOptional(\stdClass $a = null, $b)
86+
{
87+
88+
}
89+
8590
/**
8691
* @param int $integer
8792
*/

0 commit comments

Comments
 (0)