From dce9f540aa9b09a24c2abe7faa824d963a2f0ca4 Mon Sep 17 00:00:00 2001 From: Composite PHP Date: Sat, 20 May 2023 09:47:17 +0100 Subject: [PATCH] Add new Attribute SkipSerialization --- src/Attributes/SkipSerialization.php | 8 ++++++++ src/ColumnBuilder.php | 3 +++ tests/ColumnBuilderTest.php | 21 +++++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 src/Attributes/SkipSerialization.php diff --git a/src/Attributes/SkipSerialization.php b/src/Attributes/SkipSerialization.php new file mode 100644 index 0000000..332d8d6 --- /dev/null +++ b/src/Attributes/SkipSerialization.php @@ -0,0 +1,8 @@ +getAttributes() as $attribute) { $attributeInstance = $attribute->newInstance(); + if ($attributeInstance instanceof Attributes\SkipSerialization) { + continue 2; + } $propertyAttributes[$attributeInstance::class] = $attributeInstance; } diff --git a/tests/ColumnBuilderTest.php b/tests/ColumnBuilderTest.php index 9d54921..d875110 100644 --- a/tests/ColumnBuilderTest.php +++ b/tests/ColumnBuilderTest.php @@ -3,6 +3,7 @@ namespace Composite\Entity\Tests; use Composite\Entity\AbstractEntity; +use Composite\Entity\Attributes\SkipSerialization; use Composite\Entity\Columns\AbstractColumn; final class ColumnBuilderTest extends \PHPUnit\Framework\TestCase @@ -25,6 +26,26 @@ public function __construct( }, 'expected' => ['pub1', 'prot1', 'pub2', 'prot2'] ], + [ + 'entity' => new class extends AbstractEntity { + public int $var4 = 4; + #[SkipSerialization] + public int $var5 = 5; + protected int $var6 = 6; + #[SkipSerialization] + protected int $var7 = 7; + private int $var8 = 8; + + public function __construct( + public int $var1 = 1, + #[SkipSerialization] + public int $var2 = 2, + #[SkipSerialization] + protected int $var3 = 3, + ) {} + }, + 'expected' => ['var1', 'var4', 'var6',] + ], ]; }