diff --git a/src/Ratchet/Session/Serialize/PhpHandler.php b/src/Ratchet/Session/Serialize/PhpHandler.php index 8fb5308..b1df356 100644 --- a/src/Ratchet/Session/Serialize/PhpHandler.php +++ b/src/Ratchet/Session/Serialize/PhpHandler.php @@ -3,10 +3,21 @@ namespace Ratchet\Session\Serialize; class PhpHandler implements HandlerInterface { /** + * Simply reverse behaviour of unserialize method. * {@inheritdoc} */ function serialize(array $data) { - throw new \RuntimeException("Serialize PhpHandler:serialize code not written yet, write me!"); + $preSerialized = array(); + $serialized = ''; + + if (count($data)) { + foreach ($data as $bucket => $bucketData) { + $preSerialized[] = $bucket . '|' . serialize($bucketData); + } + $serialized = implode('', $preSerialized); + } + + return $serialized; } /** diff --git a/tests/unit/Session/Serialize/PhpHandlerTest.php b/tests/unit/Session/Serialize/PhpHandlerTest.php index 4dddee9..4acf5bc 100644 --- a/tests/unit/Session/Serialize/PhpHandlerTest.php +++ b/tests/unit/Session/Serialize/PhpHandlerTest.php @@ -33,4 +33,11 @@ class PhpHandlerTest extends \PHPUnit_Framework_TestCase { public function testUnserialize($in, $expected) { $this->assertEquals($expected, $this->_handler->unserialize($in)); } + + /** + * @dataProvider serializedProvider + */ + public function testSerialize($serialized, $original) { + $this->assertEquals($serialized, $this->_handler->serialize($original)); + } }