From 7b774b8268d848e0d019bd3da1b644e78d509ff2 Mon Sep 17 00:00:00 2001 From: Mark Schmale Date: Thu, 30 Jan 2025 17:03:11 +0100 Subject: [PATCH] add support for php 8.4: explicit nullables php 8.4 deprecates implicit nullability for parameters. So `function a(string $foo = null)` will throw a deprecation notice, the parameter must explicitly be marked nullable `function a(?string $foo = null)`. --- .github/workflows/buildcheck.yml | 1 + src/Parser.php | 6 +++--- src/ParserInterface.php | 2 +- src/Serializer.php | 2 +- tests/ParserTest.php | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/buildcheck.yml b/.github/workflows/buildcheck.yml index f7eb524..3aff88b 100644 --- a/.github/workflows/buildcheck.yml +++ b/.github/workflows/buildcheck.yml @@ -18,6 +18,7 @@ jobs: - "8.1" - "8.2" - "8.3" + - "8.4" composer: - "" - "--prefer-lowest" diff --git a/src/Parser.php b/src/Parser.php index 31e52b3..7383ecc 100644 --- a/src/Parser.php +++ b/src/Parser.php @@ -36,7 +36,7 @@ final class Parser implements ParserInterface * * @param FactoryInterface $factory A segment factory for creating segments */ - public function __construct(FactoryInterface $factory = null, TokenizerInterface $tokenizer = null) + public function __construct(?FactoryInterface $factory = null, ?TokenizerInterface $tokenizer = null) { if ($factory === null) { $factory = new Factory(); @@ -59,7 +59,7 @@ public function __construct(FactoryInterface $factory = null, TokenizerInterface * @return SegmentInterface[] * @throws ParseException */ - public function parse(string $message, ControlCharactersInterface $characters = null): iterable + public function parse(string $message, ?ControlCharactersInterface $characters = null): iterable { $characters = $this->getControlCharacters($message, $characters); @@ -79,7 +79,7 @@ public function parse(string $message, ControlCharactersInterface $characters = * * @return ControlCharactersInterface */ - private function getControlCharacters(string &$message, ControlCharactersInterface $characters = null): ControlCharactersInterface + private function getControlCharacters(string &$message, ?ControlCharactersInterface $characters = null): ControlCharactersInterface { if ($characters === null) { $characters = new ControlCharacters(); diff --git a/src/ParserInterface.php b/src/ParserInterface.php index cf6f1a1..fdb53c8 100644 --- a/src/ParserInterface.php +++ b/src/ParserInterface.php @@ -17,5 +17,5 @@ interface ParserInterface * @return iterable * @throws ParseException */ - public function parse(string $message, ControlCharactersInterface $characters = null): iterable; + public function parse(string $message, ?ControlCharactersInterface $characters = null): iterable; } diff --git a/src/Serializer.php b/src/Serializer.php index 10973ca..ab5da14 100644 --- a/src/Serializer.php +++ b/src/Serializer.php @@ -25,7 +25,7 @@ final class Serializer implements SerializerInterface /** * @param ControlCharactersInterface|null $characters */ - public function __construct(ControlCharactersInterface $characters = null) + public function __construct(?ControlCharactersInterface $characters = null) { if ($characters === null) { $characters = new ControlCharacters(); diff --git a/tests/ParserTest.php b/tests/ParserTest.php index 2dd134b..83484a6 100644 --- a/tests/ParserTest.php +++ b/tests/ParserTest.php @@ -29,7 +29,7 @@ public function setUp(): void } - public function getControlCharacters(string &$message, ControlCharactersInterface $characters = null): void + public function getControlCharacters(string &$message, ?ControlCharactersInterface $characters = null): void { if ($characters === null) { $characters = Mockery::mock(ControlCharactersInterface::class);