From 88eaf19c955a365f2b7a354a6cfd75f7c2e43fce Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Thu, 28 May 2020 17:34:51 +0200 Subject: [PATCH 1/4] SegmentedValues receives SegmentFactory --- example.php | 2 +- src/EdifactParser.php | 10 ++++++-- src/SegmentedValues.php | 34 ++++++++++++---------------- src/Segments/SegmentFactory.php | 4 ++-- tests/Unit/SegmentedValuesTest.php | 3 ++- tests/Unit/TransactionResultTest.php | 7 +++--- 6 files changed, 32 insertions(+), 28 deletions(-) diff --git a/example.php b/example.php index 4f422dd..9ffead0 100644 --- a/example.php +++ b/example.php @@ -61,7 +61,7 @@ UNZ+2+8' EDI; -$transactionResult = (new EdifactParser())->parse($fileContent); +$transactionResult = EdifactParser::create()->parse($fileContent); foreach ($transactionResult->messages() as $i => $message) { print "Message number: {$i}" . PHP_EOL; diff --git a/src/EdifactParser.php b/src/EdifactParser.php index aff8408..95c89cb 100644 --- a/src/EdifactParser.php +++ b/src/EdifactParser.php @@ -7,12 +7,17 @@ use EDI\Parser; use EdifactParser\Exception\InvalidFile; use EdifactParser\Segments\CustomSegmentFactoryInterface; +use EdifactParser\Segments\SegmentFactory; final class EdifactParser { - /** @var null|CustomSegmentFactoryInterface */ private ?CustomSegmentFactoryInterface $customSegmentsFactory; + public static function create(?CustomSegmentFactoryInterface $customSegmentsFactory = null): self + { + return new self($customSegmentsFactory); + } + public function __construct(?CustomSegmentFactoryInterface $customSegmentsFactory = null) { $this->customSegmentsFactory = $customSegmentsFactory; @@ -27,7 +32,8 @@ public function parse(string $fileContent): TransactionResult throw InvalidFile::withErrors($errors); } - $segmentedValues = SegmentedValues::fromRaw($parser->get(), $this->customSegmentsFactory); + $factory = new SegmentFactory($this->customSegmentsFactory); + $segmentedValues = (new SegmentedValues($factory))->fromRaw($parser->get()); return TransactionResult::fromSegmentedValues($segmentedValues); } diff --git a/src/SegmentedValues.php b/src/SegmentedValues.php index 6af43ed..762a3bd 100644 --- a/src/SegmentedValues.php +++ b/src/SegmentedValues.php @@ -4,33 +4,33 @@ namespace EdifactParser; -use EdifactParser\Segments\CustomSegmentFactoryInterface; use EdifactParser\Segments\SegmentFactory; use EdifactParser\Segments\SegmentInterface; final class SegmentedValues { /** @psalm-var list */ - private array $list; + private array $list = []; - public static function fromRaw( - array $rawArrays, - ?CustomSegmentFactoryInterface $customSegmentsFactory = null - ): self { - $factory = new SegmentFactory($customSegmentsFactory); + private SegmentFactory $segmentFactory; - $self = new self(); - $segments = []; + public static function factory(): self + { + return new self(new SegmentFactory()); + } - foreach ($rawArrays as $rawArray) { - $segments[] = $factory->segmentFromArray($rawArray); - } + public function __construct(SegmentFactory $segmentFactory) + { + $this->segmentFactory = $segmentFactory; + } - foreach ($segments as $segment) { - $self->addSegment($segment); + public function fromRaw(array $rawArrays): self + { + foreach ($rawArrays as $rawArray) { + $this->list[] = $this->segmentFactory->segmentFromArray($rawArray); } - return $self; + return $this; } /** @return SegmentInterface[] */ @@ -39,8 +39,4 @@ public function list(): array return $this->list; } - private function addSegment(SegmentInterface $segment): void - { - $this->list[] = $segment; - } } diff --git a/src/Segments/SegmentFactory.php b/src/Segments/SegmentFactory.php index eb3e1b5..d809253 100644 --- a/src/Segments/SegmentFactory.php +++ b/src/Segments/SegmentFactory.php @@ -4,11 +4,11 @@ namespace EdifactParser\Segments; -final class SegmentFactory +final class SegmentFactory implements CustomSegmentFactoryInterface { private ?CustomSegmentFactoryInterface $customSegmentsFactory; - public function __construct(?CustomSegmentFactoryInterface $customSegmentsFactory) + public function __construct(?CustomSegmentFactoryInterface $customSegmentsFactory = null) { $this->customSegmentsFactory = $customSegmentsFactory; } diff --git a/tests/Unit/SegmentedValuesTest.php b/tests/Unit/SegmentedValuesTest.php index bee4dea..4a13a4b 100644 --- a/tests/Unit/SegmentedValuesTest.php +++ b/tests/Unit/SegmentedValuesTest.php @@ -6,6 +6,7 @@ use EDI\Parser; use EdifactParser\SegmentedValues; +use EdifactParser\Segments\SegmentFactory; use EdifactParser\Segments\UNHMessageHeader; use PHPUnit\Framework\TestCase; @@ -16,7 +17,7 @@ public function getListOfSegments(): void { $fileContent = "UNH+1+IFTMIN:S:93A:UN:PN001'\nUNH+2+IFTMIN:S:93A:UN:PN001'"; $parser = new Parser($fileContent); - $values = SegmentedValues::fromRaw($parser->get()); + $values = (new SegmentedValues(new SegmentFactory()))->fromRaw($parser->get()); self::assertEquals([ new UNHMessageHeader(['UNH', '1', ['IFTMIN', 'S', '93A', 'UN', 'PN001']]), diff --git a/tests/Unit/TransactionResultTest.php b/tests/Unit/TransactionResultTest.php index 7226aed..7737e4c 100644 --- a/tests/Unit/TransactionResultTest.php +++ b/tests/Unit/TransactionResultTest.php @@ -7,6 +7,7 @@ use EDI\Parser; use EdifactParser\SegmentedValues; use EdifactParser\Segments\CNTControl; +use EdifactParser\Segments\SegmentFactory; use EdifactParser\Segments\UNHMessageHeader; use EdifactParser\Segments\UnknownSegment; use EdifactParser\Segments\UNTMessageFooter; @@ -22,7 +23,7 @@ public function oneMessage(): void $fileContent = "UNH+1+IFTMIN:S:93A:UN:PN001'\nUNT+19+1'"; $result = TransactionResult::fromSegmentedValues( - SegmentedValues::fromRaw((new Parser($fileContent))->get()) + SegmentedValues::factory()->fromRaw((new Parser($fileContent))->get()) ); self::assertEquals([ @@ -45,7 +46,7 @@ public function twoMessages(): void UNZ+2+3' EDI; $result = TransactionResult::fromSegmentedValues( - SegmentedValues::fromRaw((new Parser($fileContent))->get()) + SegmentedValues::factory()->fromRaw((new Parser($fileContent))->get()) ); self::assertEquals([ @@ -74,7 +75,7 @@ public function oneMessageWithMultipleSegmentsWithTheSameName(): void UNZ+2+3' EDI; $result = TransactionResult::fromSegmentedValues( - SegmentedValues::fromRaw((new Parser($fileContent))->get()) + SegmentedValues::factory()->fromRaw((new Parser($fileContent))->get()) ); self::assertEquals([ From 409d18f2af79c8bf5d7790607dc69694e773c820 Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Thu, 28 May 2020 18:08:54 +0200 Subject: [PATCH 2/4] Inject SegmentFactoryInterface into the Parser --- src/EdifactParser.php | 15 +++++----- src/SegmentedValues.php | 6 ++-- .../CustomSegmentFactoryInterface.php | 10 ------- src/Segments/SegmentFactory.php | 28 +------------------ src/Segments/SegmentFactoryInterface.php | 10 +++++++ tests/Functional/EdifactParserTest.php | 13 +++++---- ...tFactory.php => TestingSegmentFactory.php} | 12 +++++--- tests/Unit/TransactionResultTest.php | 1 - 8 files changed, 37 insertions(+), 58 deletions(-) delete mode 100644 src/Segments/CustomSegmentFactoryInterface.php create mode 100644 src/Segments/SegmentFactoryInterface.php rename tests/Functional/{TestingCustomSegmentFactory.php => TestingSegmentFactory.php} (69%) diff --git a/src/EdifactParser.php b/src/EdifactParser.php index 95c89cb..76c2e09 100644 --- a/src/EdifactParser.php +++ b/src/EdifactParser.php @@ -6,21 +6,21 @@ use EDI\Parser; use EdifactParser\Exception\InvalidFile; -use EdifactParser\Segments\CustomSegmentFactoryInterface; use EdifactParser\Segments\SegmentFactory; +use EdifactParser\Segments\SegmentFactoryInterface; final class EdifactParser { - private ?CustomSegmentFactoryInterface $customSegmentsFactory; + private SegmentFactoryInterface $segmentFactory; - public static function create(?CustomSegmentFactoryInterface $customSegmentsFactory = null): self + public static function create(?SegmentFactoryInterface $segmentFactory = null): self { - return new self($customSegmentsFactory); + return new self($segmentFactory ?? new SegmentFactory()); } - public function __construct(?CustomSegmentFactoryInterface $customSegmentsFactory = null) + private function __construct(SegmentFactoryInterface $segmentFactory) { - $this->customSegmentsFactory = $customSegmentsFactory; + $this->segmentFactory = $segmentFactory; } public function parse(string $fileContent): TransactionResult @@ -32,8 +32,7 @@ public function parse(string $fileContent): TransactionResult throw InvalidFile::withErrors($errors); } - $factory = new SegmentFactory($this->customSegmentsFactory); - $segmentedValues = (new SegmentedValues($factory))->fromRaw($parser->get()); + $segmentedValues = (new SegmentedValues($this->segmentFactory))->fromRaw($parser->get()); return TransactionResult::fromSegmentedValues($segmentedValues); } diff --git a/src/SegmentedValues.php b/src/SegmentedValues.php index 762a3bd..192feb4 100644 --- a/src/SegmentedValues.php +++ b/src/SegmentedValues.php @@ -5,6 +5,7 @@ namespace EdifactParser; use EdifactParser\Segments\SegmentFactory; +use EdifactParser\Segments\SegmentFactoryInterface; use EdifactParser\Segments\SegmentInterface; final class SegmentedValues @@ -12,14 +13,14 @@ final class SegmentedValues /** @psalm-var list */ private array $list = []; - private SegmentFactory $segmentFactory; + private SegmentFactoryInterface $segmentFactory; public static function factory(): self { return new self(new SegmentFactory()); } - public function __construct(SegmentFactory $segmentFactory) + public function __construct(SegmentFactoryInterface $segmentFactory) { $this->segmentFactory = $segmentFactory; } @@ -38,5 +39,4 @@ public function list(): array { return $this->list; } - } diff --git a/src/Segments/CustomSegmentFactoryInterface.php b/src/Segments/CustomSegmentFactoryInterface.php deleted file mode 100644 index c1faf5d..0000000 --- a/src/Segments/CustomSegmentFactoryInterface.php +++ /dev/null @@ -1,10 +0,0 @@ -customSegmentsFactory = $customSegmentsFactory; - } - public function segmentFromArray(array $rawArray): SegmentInterface { - $customSegment = $this->customSegment($rawArray); - - if ($customSegment) { - return $customSegment; - } - $name = $rawArray[0]; switch ($name) { @@ -44,17 +31,4 @@ public function segmentFromArray(array $rawArray): SegmentInterface return new UnknownSegment($rawArray); } - - private function customSegment(array $rawArray): ?SegmentInterface - { - if ($this->customSegmentsFactory) { - $segment = $this->customSegmentsFactory->segmentFromArray($rawArray); - - if ($segment) { - return $segment; - } - } - - return null; - } } diff --git a/src/Segments/SegmentFactoryInterface.php b/src/Segments/SegmentFactoryInterface.php new file mode 100644 index 0000000..ddf0c40 --- /dev/null +++ b/src/Segments/SegmentFactoryInterface.php @@ -0,0 +1,10 @@ +expectException(InvalidFile::class); - (new EdifactParser())->parse($fileContent); + EdifactParser::create()->parse($fileContent); } /** @test */ @@ -37,7 +37,7 @@ public function parseMoreThanOneMessage(): void UNT+19+3' UNZ+3+4' EDI; - $transactionResult = (new EdifactParser())->parse($fileContent); + $transactionResult = EdifactParser::create()->parse($fileContent); self::assertCount(3, $transactionResult->messages()); } @@ -53,8 +53,7 @@ public function extractValuesFromMessage(): void UNZ+1+3' EDI; - $parser = new EdifactParser(); - $transactionResult = $parser->parse($fileContent); + $transactionResult = EdifactParser::create()->parse($fileContent); self::assertCount(1, $transactionResult->messages()); $firstMessage = $transactionResult->messages()[0]; @@ -88,7 +87,7 @@ public function useACustomSegmentFactory(): void UNT+19+1' UNZ+1+3' EDI; - $parser = new EdifactParser(new TestingCustomSegmentFactory('CUSTOM')); + $parser = EdifactParser::create(new TestingSegmentFactory('CUSTOM')); $transactionResult = $parser->parse($fileContent); self::assertCount(1, $transactionResult->messages()); @@ -98,5 +97,9 @@ public function useACustomSegmentFactory(): void /** @var SegmentInterface $custom */ $custom = $segments['CUSTOM']['anyKey']; self::assertEquals(['CUSTOM', 'anyKey', ['whatever', 'value', '9']], $custom->rawValues()); + + /** @var CNTControl $cnt11 */ + $cnt11 = $segments[CNTControl::class]['11']; + self::assertEquals(['CNT', ['11', '1', 'PCE']], $cnt11->rawValues()); } } diff --git a/tests/Functional/TestingCustomSegmentFactory.php b/tests/Functional/TestingSegmentFactory.php similarity index 69% rename from tests/Functional/TestingCustomSegmentFactory.php rename to tests/Functional/TestingSegmentFactory.php index 8a46f04..81a2504 100644 --- a/tests/Functional/TestingCustomSegmentFactory.php +++ b/tests/Functional/TestingSegmentFactory.php @@ -4,22 +4,26 @@ namespace EdifactParser\Tests\Functional; -use EdifactParser\Segments\CustomSegmentFactoryInterface; +use EdifactParser\Segments\SegmentFactory; +use EdifactParser\Segments\SegmentFactoryInterface; use EdifactParser\Segments\SegmentInterface; -final class TestingCustomSegmentFactory implements CustomSegmentFactoryInterface +final class TestingSegmentFactory implements SegmentFactoryInterface { private string $customKey; + private SegmentFactory $defaultFactory; + public function __construct(string $customKey) { $this->customKey = $customKey; + $this->defaultFactory = new SegmentFactory(); } - public function segmentFromArray(array $rawArray): ?SegmentInterface + public function segmentFromArray(array $rawArray): SegmentInterface { if ($this->customKey !== $rawArray[0]) { - return null; + return $this->defaultFactory->segmentFromArray($rawArray); } return new class($rawArray) implements SegmentInterface { diff --git a/tests/Unit/TransactionResultTest.php b/tests/Unit/TransactionResultTest.php index 7737e4c..02ee868 100644 --- a/tests/Unit/TransactionResultTest.php +++ b/tests/Unit/TransactionResultTest.php @@ -7,7 +7,6 @@ use EDI\Parser; use EdifactParser\SegmentedValues; use EdifactParser\Segments\CNTControl; -use EdifactParser\Segments\SegmentFactory; use EdifactParser\Segments\UNHMessageHeader; use EdifactParser\Segments\UnknownSegment; use EdifactParser\Segments\UNTMessageFooter; From ee290ce95bfc88f51368278008ca33f39a9245e4 Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Thu, 28 May 2020 18:29:40 +0200 Subject: [PATCH 3/4] Add unit tests for SegmentFactory --- src/EdifactParser.php | 7 ++++- src/SegmentedValues.php | 4 +-- tests/Functional/EdifactParserTest.php | 2 +- tests/Unit/Segments/SegmentFactoryTest.php | 35 ++++++++++++++++++++++ 4 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 tests/Unit/Segments/SegmentFactoryTest.php diff --git a/src/EdifactParser.php b/src/EdifactParser.php index 76c2e09..e5cc7fb 100644 --- a/src/EdifactParser.php +++ b/src/EdifactParser.php @@ -23,6 +23,11 @@ private function __construct(SegmentFactoryInterface $segmentFactory) $this->segmentFactory = $segmentFactory; } + public function __invoke(string $fileContent): TransactionResult + { + return $this->parse($fileContent); + } + public function parse(string $fileContent): TransactionResult { $parser = new Parser($fileContent); @@ -32,7 +37,7 @@ public function parse(string $fileContent): TransactionResult throw InvalidFile::withErrors($errors); } - $segmentedValues = (new SegmentedValues($this->segmentFactory))->fromRaw($parser->get()); + $segmentedValues = SegmentedValues::factory($this->segmentFactory)->fromRaw($parser->get()); return TransactionResult::fromSegmentedValues($segmentedValues); } diff --git a/src/SegmentedValues.php b/src/SegmentedValues.php index 192feb4..1d31836 100644 --- a/src/SegmentedValues.php +++ b/src/SegmentedValues.php @@ -15,9 +15,9 @@ final class SegmentedValues private SegmentFactoryInterface $segmentFactory; - public static function factory(): self + public static function factory(?SegmentFactoryInterface $segmentFactory = null): self { - return new self(new SegmentFactory()); + return new self($segmentFactory ?? new SegmentFactory()); } public function __construct(SegmentFactoryInterface $segmentFactory) diff --git a/tests/Functional/EdifactParserTest.php b/tests/Functional/EdifactParserTest.php index dbfd645..adc1931 100644 --- a/tests/Functional/EdifactParserTest.php +++ b/tests/Functional/EdifactParserTest.php @@ -88,7 +88,7 @@ public function useACustomSegmentFactory(): void UNZ+1+3' EDI; $parser = EdifactParser::create(new TestingSegmentFactory('CUSTOM')); - $transactionResult = $parser->parse($fileContent); + $transactionResult = $parser($fileContent); self::assertCount(1, $transactionResult->messages()); $firstMessage = $transactionResult->messages()[0]; diff --git a/tests/Unit/Segments/SegmentFactoryTest.php b/tests/Unit/Segments/SegmentFactoryTest.php new file mode 100644 index 0000000..7e49453 --- /dev/null +++ b/tests/Unit/Segments/SegmentFactoryTest.php @@ -0,0 +1,35 @@ +segmentFromArray(['UNH'])); + self::assertInstanceOf(DTMDateTimePeriod::class, $factory->segmentFromArray(['DTM'])); + self::assertInstanceOf(NADNameAddress::class, $factory->segmentFromArray(['NAD'])); + self::assertInstanceOf(MEADimensions::class, $factory->segmentFromArray(['MEA'])); + self::assertInstanceOf(CNTControl::class, $factory->segmentFromArray(['CNT'])); + self::assertInstanceOf(PCIPackageId::class, $factory->segmentFromArray(['PCI'])); + self::assertInstanceOf(BGMBeginningOfMessage::class, $factory->segmentFromArray(['BGM'])); + self::assertInstanceOf(UNTMessageFooter::class, $factory->segmentFromArray(['UNT'])); + self::assertInstanceOf(UnknownSegment::class, $factory->segmentFromArray(['UnknownSegment'])); + } +} From e85b204c279b2fc9727215ed6a33366cea971797 Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Thu, 28 May 2020 20:01:39 +0200 Subject: [PATCH 4/4] Add psalm-immutable --- src/EdifactParser.php | 1 + src/Exception/InvalidFile.php | 1 + src/SegmentedValues.php | 1 + src/Segments/BGMBeginningOfMessage.php | 1 + src/Segments/CNTControl.php | 1 + src/Segments/DTMDateTimePeriod.php | 1 + src/Segments/MEADimensions.php | 1 + src/Segments/NADNameAddress.php | 1 + src/Segments/PCIPackageId.php | 1 + src/Segments/SegmentFactory.php | 1 + src/Segments/UNHMessageHeader.php | 1 + src/Segments/UNTMessageFooter.php | 1 + src/Segments/UnknownSegment.php | 1 + src/TransactionMessage.php | 1 + src/TransactionResult.php | 2 ++ 15 files changed, 16 insertions(+) diff --git a/src/EdifactParser.php b/src/EdifactParser.php index e5cc7fb..0372d28 100644 --- a/src/EdifactParser.php +++ b/src/EdifactParser.php @@ -9,6 +9,7 @@ use EdifactParser\Segments\SegmentFactory; use EdifactParser\Segments\SegmentFactoryInterface; +/** @psalmphp-immutable */ final class EdifactParser { private SegmentFactoryInterface $segmentFactory; diff --git a/src/Exception/InvalidFile.php b/src/Exception/InvalidFile.php index 5323077..09886ee 100644 --- a/src/Exception/InvalidFile.php +++ b/src/Exception/InvalidFile.php @@ -7,6 +7,7 @@ use Exception; use function json_encode; +/** @psalmphp-immutable */ final class InvalidFile extends Exception { public static function withErrors(array $errors): self diff --git a/src/SegmentedValues.php b/src/SegmentedValues.php index 1d31836..a833541 100644 --- a/src/SegmentedValues.php +++ b/src/SegmentedValues.php @@ -8,6 +8,7 @@ use EdifactParser\Segments\SegmentFactoryInterface; use EdifactParser\Segments\SegmentInterface; +/** @psalmphp-immutable */ final class SegmentedValues { /** @psalm-var list */ diff --git a/src/Segments/BGMBeginningOfMessage.php b/src/Segments/BGMBeginningOfMessage.php index 522eba9..7baabd9 100644 --- a/src/Segments/BGMBeginningOfMessage.php +++ b/src/Segments/BGMBeginningOfMessage.php @@ -4,6 +4,7 @@ namespace EdifactParser\Segments; +/** @psalmphp-immutable */ final class BGMBeginningOfMessage implements SegmentInterface { private array $rawValues; diff --git a/src/Segments/CNTControl.php b/src/Segments/CNTControl.php index 44c5faa..a2867b7 100644 --- a/src/Segments/CNTControl.php +++ b/src/Segments/CNTControl.php @@ -6,6 +6,7 @@ namespace EdifactParser\Segments; +/** @psalmphp-immutable */ final class CNTControl implements SegmentInterface { private array $rawValues; diff --git a/src/Segments/DTMDateTimePeriod.php b/src/Segments/DTMDateTimePeriod.php index 2051dd7..e4cbed5 100644 --- a/src/Segments/DTMDateTimePeriod.php +++ b/src/Segments/DTMDateTimePeriod.php @@ -4,6 +4,7 @@ namespace EdifactParser\Segments; +/** @psalmphp-immutable */ final class DTMDateTimePeriod implements SegmentInterface { private array $rawValues; diff --git a/src/Segments/MEADimensions.php b/src/Segments/MEADimensions.php index bff08d2..b2c5956 100644 --- a/src/Segments/MEADimensions.php +++ b/src/Segments/MEADimensions.php @@ -6,6 +6,7 @@ namespace EdifactParser\Segments; +/** @psalmphp-immutable */ final class MEADimensions implements SegmentInterface { private array $rawValues; diff --git a/src/Segments/NADNameAddress.php b/src/Segments/NADNameAddress.php index 42df127..6abe874 100644 --- a/src/Segments/NADNameAddress.php +++ b/src/Segments/NADNameAddress.php @@ -6,6 +6,7 @@ namespace EdifactParser\Segments; +/** @psalmphp-immutable */ final class NADNameAddress implements SegmentInterface { private array $rawValues; diff --git a/src/Segments/PCIPackageId.php b/src/Segments/PCIPackageId.php index f26171c..6afd91b 100644 --- a/src/Segments/PCIPackageId.php +++ b/src/Segments/PCIPackageId.php @@ -4,6 +4,7 @@ namespace EdifactParser\Segments; +/** @psalmphp-immutable */ final class PCIPackageId implements SegmentInterface { private array $rawValues; diff --git a/src/Segments/SegmentFactory.php b/src/Segments/SegmentFactory.php index 7191002..456ee8c 100644 --- a/src/Segments/SegmentFactory.php +++ b/src/Segments/SegmentFactory.php @@ -4,6 +4,7 @@ namespace EdifactParser\Segments; +/** @psalmphp-immutable */ final class SegmentFactory implements SegmentFactoryInterface { public function segmentFromArray(array $rawArray): SegmentInterface diff --git a/src/Segments/UNHMessageHeader.php b/src/Segments/UNHMessageHeader.php index a50fb3d..f4694a9 100644 --- a/src/Segments/UNHMessageHeader.php +++ b/src/Segments/UNHMessageHeader.php @@ -4,6 +4,7 @@ namespace EdifactParser\Segments; +/** @psalmphp-immutable */ final class UNHMessageHeader implements SegmentInterface { private array $rawValues; diff --git a/src/Segments/UNTMessageFooter.php b/src/Segments/UNTMessageFooter.php index ba88234..45378ca 100644 --- a/src/Segments/UNTMessageFooter.php +++ b/src/Segments/UNTMessageFooter.php @@ -4,6 +4,7 @@ namespace EdifactParser\Segments; +/** @psalmphp-immutable */ final class UNTMessageFooter implements SegmentInterface { private array $rawValues; diff --git a/src/Segments/UnknownSegment.php b/src/Segments/UnknownSegment.php index c86de61..a242c32 100644 --- a/src/Segments/UnknownSegment.php +++ b/src/Segments/UnknownSegment.php @@ -4,6 +4,7 @@ namespace EdifactParser\Segments; +/** @psalmphp-immutable */ final class UnknownSegment implements SegmentInterface { private array $rawValues; diff --git a/src/TransactionMessage.php b/src/TransactionMessage.php index 07d56dc..d9e300f 100644 --- a/src/TransactionMessage.php +++ b/src/TransactionMessage.php @@ -6,6 +6,7 @@ use EdifactParser\Segments\SegmentInterface; +/** @psalmphp-immutable */ final class TransactionMessage { /** diff --git a/src/TransactionResult.php b/src/TransactionResult.php index 75e0766..684fafb 100644 --- a/src/TransactionResult.php +++ b/src/TransactionResult.php @@ -8,6 +8,8 @@ /** * A transactionResult is a list of transactionMessages. + * + * @psalmphp-immutable */ final class TransactionResult {