diff --git a/src/Container/Traits/HasLocale.php b/src/Container/Traits/HasLocale.php index bc342a3..3fddf6f 100644 --- a/src/Container/Traits/HasLocale.php +++ b/src/Container/Traits/HasLocale.php @@ -7,16 +7,16 @@ trait HasLocale /** * The current locale format (BCP 47 Code). * - * @var string + * @var ?string */ - protected string|null $locale; + protected ?string $locale; /** * Get the current locale. * - * @return string|null + * @return ?string */ - public function getLocale(): string|null + public function getLocale(): ?string { return $this->locale ?? null; } @@ -24,11 +24,11 @@ public function getLocale(): string|null /** * Change the locale. * - * @param string|null $locale + * @param ?string $locale * * @return self */ - public function locale(string|null $locale): self + public function locale(?string $locale): self { $this->locale = $locale; diff --git a/src/Extensions/FinancialExtension.php b/src/Extensions/FinancialExtension.php index 56a86d7..7e21630 100644 --- a/src/Extensions/FinancialExtension.php +++ b/src/Extensions/FinancialExtension.php @@ -10,12 +10,12 @@ class FinancialExtension extends Extension use HasLocale; /** - * @param string|null $countryCode - * @param string|null $format [{d} => digit, {l} => letter, {a} => any] + * @param ?string $countryCode + * @param ?string $format [{d} => digit, {l} => letter, {a} => any] * * @return string */ - public function iban(string $countryCode = null, string $format = null): string + public function iban(?string $countryCode = null, ?string $format = null): string { if ($format === null) { $format = str_repeat('{d}', 24); diff --git a/src/Extensions/PersonExtension.php b/src/Extensions/PersonExtension.php index 8b156b3..6a465d8 100644 --- a/src/Extensions/PersonExtension.php +++ b/src/Extensions/PersonExtension.php @@ -66,12 +66,12 @@ class PersonExtension extends Extension 'Professor', ]; - public function name(string|null $gender = null): string + public function name(?string $gender = null): string { return sprintf('%s %s', $this->firstName($gender), $this->lastName()); } - public function firstName(string|null $gender = null): string + public function firstName(?string $gender = null): string { if ($gender === static::GENDER_MALE) { return $this->pickArrayRandomElement($this->firstNameMale); @@ -89,7 +89,7 @@ public function lastName(): string return $this->pickArrayRandomElement($this->lastName); } - public function title($gender = null) + public function title(?string $gender = null) { if ($gender === static::GENDER_MALE) { return $this->pickArrayRandomElement($this->titleMale); diff --git a/src/Extensions/Traits/HasLocale.php b/src/Extensions/Traits/HasLocale.php index 534ca49..a5c2349 100644 --- a/src/Extensions/Traits/HasLocale.php +++ b/src/Extensions/Traits/HasLocale.php @@ -7,9 +7,9 @@ trait HasLocale /** * The extension locale (BCP 47 Code). * - * @return string | null + * @return ?string */ - public function getLocale(): string|null + public function getLocale(): ?string { return null; } diff --git a/src/Faker.php b/src/Faker.php index 8302ab2..240dd07 100644 --- a/src/Faker.php +++ b/src/Faker.php @@ -12,11 +12,11 @@ class Faker /** * The current locale format (BCP 47 Code). * - * @var string|null + * @var ?string */ - protected string|null $locale; + protected ?string $locale; - public function __construct(string|null $locale = null) + public function __construct(?string $locale = null) { $this->locale = $locale; } diff --git a/src/Manifests/ContainerMixinManifest.php b/src/Manifests/ContainerMixinManifest.php index f490fcc..965f8c1 100644 --- a/src/Manifests/ContainerMixinManifest.php +++ b/src/Manifests/ContainerMixinManifest.php @@ -9,6 +9,7 @@ use phpDocumentor\Reflection\TypeResolver; use phpDocumentor\Reflection\Types\Intersection; use phpDocumentor\Reflection\Types\Mixed_; +use phpDocumentor\Reflection\Types\Nullable; class ContainerMixinManifest { @@ -36,10 +37,10 @@ class ContainerMixinManifest /** * Create a new package manifest instance. * - * @param string $basePath - * @param string|null $containerMixinPath + * @param string $basePath + * @param ?string $containerMixinPath */ - public function __construct(string $basePath, string $containerMixinPath = null) + public function __construct(string $basePath, ?string $containerMixinPath = null) { $this->basePath = $basePath; $this->vendorPath = $basePath.'/vendor'; @@ -104,6 +105,10 @@ public function build(array $extensionMethods, array $extensions) } else { $type = $typeResolver->resolve($type->getName()); } + + if ($parameter->allowsNull()) { + $type = new Nullable($type); + } } $parameters[] = new DocBlock\Tags\MethodParameter( diff --git a/src/Manifests/PackageManifest.php b/src/Manifests/PackageManifest.php index 97870e4..53e964b 100644 --- a/src/Manifests/PackageManifest.php +++ b/src/Manifests/PackageManifest.php @@ -9,9 +9,9 @@ class PackageManifest /** * The manifest path. * - * @var string|null + * @var ?string */ - public string|null $manifestPath; + public ?string $manifestPath; /** * The base path. diff --git a/tests/Support/Extensions/EnEnExtensionTest.php b/tests/Support/Extensions/EnEnExtensionTest.php index ca54850..ab131c0 100644 --- a/tests/Support/Extensions/EnEnExtensionTest.php +++ b/tests/Support/Extensions/EnEnExtensionTest.php @@ -14,7 +14,7 @@ public function getName(): string return 'locale-extension-test'; } - public function getLocale(): string|null + public function getLocale(): ?string { return 'en_EN'; } diff --git a/tests/Support/Extensions/EnUsExtensionTest.php b/tests/Support/Extensions/EnUsExtensionTest.php index 0dc1dce..c75ed0e 100644 --- a/tests/Support/Extensions/EnUsExtensionTest.php +++ b/tests/Support/Extensions/EnUsExtensionTest.php @@ -14,7 +14,7 @@ public function getName(): string return 'locale-extension-test'; } - public function getLocale(): string|null + public function getLocale(): ?string { return 'en_US'; } diff --git a/tests/Support/Extensions/FrFrExtensionTest.php b/tests/Support/Extensions/FrFrExtensionTest.php index 2c897cf..1e06584 100644 --- a/tests/Support/Extensions/FrFrExtensionTest.php +++ b/tests/Support/Extensions/FrFrExtensionTest.php @@ -14,7 +14,7 @@ public function getName(): string return 'locale-extension-test'; } - public function getLocale(): string|null + public function getLocale(): ?string { return 'fr_FR'; } diff --git a/tests/Support/Extensions/MixinTestExtension.php b/tests/Support/Extensions/MixinTestExtension.php index 78dea26..aa18289 100644 --- a/tests/Support/Extensions/MixinTestExtension.php +++ b/tests/Support/Extensions/MixinTestExtension.php @@ -26,4 +26,9 @@ public function withStringReturnType(): string { return 'string'; } + + public function withNullableParameter(?string $one = 'default value'): string + { + return 'string'; + } } diff --git a/tests/Unit/ContainerMixinManifestTest.php b/tests/Unit/ContainerMixinManifestTest.php index c7abda1..e281ec1 100644 --- a/tests/Unit/ContainerMixinManifestTest.php +++ b/tests/Unit/ContainerMixinManifestTest.php @@ -53,6 +53,11 @@ public function testContainerMixinBuild() $containerMixinContent ); + $this->assertStringContainsString( + '@method string withNullableParameter(?string $one)', + $containerMixinContent + ); + unlink('/tmp/ContainerMixin.php'); }