Skip to content

Commit 02578d1

Browse files
committed
Initialize nullable properties with null - Close #32
1 parent 14f03c2 commit 02578d1

File tree

2 files changed

+21
-14
lines changed

2 files changed

+21
-14
lines changed

src/ValueObjectFactory.php

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,7 @@ public function generateClasses(
307307
);
308308
$this->addNamespaceImport($classBuilder, $propertyClassNamespace . '\\' . $propertyClassName);
309309
$classBuilder->addProperty(
310-
ClassPropertyBuilder::fromScratch(
311-
$propertyPropertyName,
312-
$this->determinePropertyType($propertyType, $propertyClassName)
313-
)
310+
$this->determineProperty($propertyPropertyName, $propertyClassName, $propertyType)
314311
);
315312
break;
316313
case $propertyType instanceof ReferenceType:
@@ -333,10 +330,7 @@ public function generateClasses(
333330
$propertyType = $propertyRefType;
334331
}
335332
$classBuilder->addProperty(
336-
ClassPropertyBuilder::fromScratch(
337-
$propertyPropertyName,
338-
$this->determinePropertyType($propertyType, $propertyClassName)
339-
)
333+
$this->determineProperty($propertyPropertyName, $propertyClassName, $propertyType)
340334
);
341335
$this->addNamespaceImport($classBuilder, $propertyClassNamespace . '\\' . $propertyClassName);
342336
break;
@@ -346,10 +340,7 @@ public function generateClasses(
346340
);
347341
$this->addNamespaceImport($classBuilder, $propertyClassNamespace . '\\' . $propertyClassName);
348342
$classBuilder->addProperty(
349-
ClassPropertyBuilder::fromScratch(
350-
$propertyPropertyName,
351-
$this->determinePropertyType($propertyType, $propertyClassName)
352-
)
343+
$this->determineProperty($propertyPropertyName, $propertyClassName, $propertyType)
353344
);
354345
break;
355346
default:
@@ -513,4 +504,20 @@ private function determinePropertyType(TypeDefinition $typeDefinition, string $c
513504
? ('?' . $className)
514505
: $className;
515506
}
507+
508+
private function determineProperty(
509+
$propertyName,
510+
$propertyClassName,
511+
TypeDefinition $typeDefinition
512+
): ClassPropertyBuilder {
513+
$property = ClassPropertyBuilder::fromScratch(
514+
$propertyName,
515+
$this->determinePropertyType($typeDefinition, $propertyClassName)
516+
);
517+
if ($typeDefinition->isRequired() === false || $typeDefinition->isNullable() === true) {
518+
$property->setDefaultValue(null);
519+
}
520+
521+
return $property;
522+
}
516523
}

tests/ValueObjectFactoryTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ final class Order
446446
public const BILLING_ADDRESS = 'billing_address';
447447
public const SHIPPING_ADDRESSES = 'shipping_addresses';
448448
private Address $billingAddress;
449-
private ?ShippingAddresses $shippingAddresses;
449+
private ?ShippingAddresses $shippingAddresses = null;
450450
public function billingAddress() : Address
451451
{
452452
return $this->billingAddress;
@@ -600,7 +600,7 @@ final class Address
600600
public const CITY = 'city';
601601
public const FEDERAL_STATE = 'federal_state';
602602
private StreetAddress $streetAddress;
603-
private ?City $city;
603+
private ?City $city = null;
604604
private State $federalState;
605605
public function streetAddress() : StreetAddress
606606
{

0 commit comments

Comments
 (0)