From b2dbe87aa779233cd659b7f299b9823022cdc4ce Mon Sep 17 00:00:00 2001 From: Peter Gribanov Date: Fri, 24 Mar 2017 15:59:03 +0300 Subject: [PATCH 1/2] available serialize enum --- src/Enum.php | 18 +++++++++++++++++- tests/EnumTest.php | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/Enum.php b/src/Enum.php index 517fbc9..515ae96 100755 --- a/src/Enum.php +++ b/src/Enum.php @@ -15,7 +15,7 @@ * @author Daniel Costa * @author Mirosław Filip */ -abstract class Enum +abstract class Enum implements \Serializable { /** * Enum value @@ -165,6 +165,22 @@ public static function search($value) return array_search($value, static::toArray(), true); } + /** + * @return string + */ + public function serialize() + { + return serialize($this->value); + } + + /** + * @param string $serialized + */ + public function unserialize($serialized) + { + $this->value = unserialize($serialized); + } + /** * Returns a value when called statically like so: MyEnum::SOME_VALUE() given SOME_VALUE is a class constant * diff --git a/tests/EnumTest.php b/tests/EnumTest.php index 14079ed..f61b955 100755 --- a/tests/EnumTest.php +++ b/tests/EnumTest.php @@ -242,4 +242,22 @@ public function testEqualsComparesProblematicValuesProperly() $this->assertFalse($emptyString->equals($null)); $this->assertFalse($null->equals($false)); } + + public function testSerialize() + { + $serialized = 'C:30:"MyCLabs\Tests\Enum\EnumFixture":10:{s:3:"foo";}'; + $value = new EnumFixture(EnumFixture::FOO); + + $this->assertEquals($serialized, serialize($value)); + } + + public function testUnserialize() + { + $serialized = 'C:30:"MyCLabs\Tests\Enum\EnumFixture":10:{s:3:"foo";}'; + /* @var $value EnumFixture */ + $value = unserialize($serialized); + + $this->assertEquals(EnumFixture::FOO, $value->getValue()); + $this->assertTrue(EnumFixture::FOO()->equals($value)); + } } From 1731f5f2ec1804f956c6419b75161123679d3ef1 Mon Sep 17 00:00:00 2001 From: Peter Gribanov Date: Fri, 24 Mar 2017 16:10:12 +0300 Subject: [PATCH 2/2] optimize serialize tests --- tests/EnumTest.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/EnumTest.php b/tests/EnumTest.php index f61b955..f1b8e34 100755 --- a/tests/EnumTest.php +++ b/tests/EnumTest.php @@ -245,17 +245,13 @@ public function testEqualsComparesProblematicValuesProperly() public function testSerialize() { - $serialized = 'C:30:"MyCLabs\Tests\Enum\EnumFixture":10:{s:3:"foo";}'; - $value = new EnumFixture(EnumFixture::FOO); - - $this->assertEquals($serialized, serialize($value)); + $this->assertEquals('C:30:"MyCLabs\Tests\Enum\EnumFixture":10:{s:3:"foo";}', serialize(EnumFixture::FOO())); } public function testUnserialize() { - $serialized = 'C:30:"MyCLabs\Tests\Enum\EnumFixture":10:{s:3:"foo";}'; /* @var $value EnumFixture */ - $value = unserialize($serialized); + $value = unserialize('C:30:"MyCLabs\Tests\Enum\EnumFixture":10:{s:3:"foo";}'); $this->assertEquals(EnumFixture::FOO, $value->getValue()); $this->assertTrue(EnumFixture::FOO()->equals($value));