Skip to content

Commit 7f3d131

Browse files
authored
Merge pull request #1778 from deguif/type-hints-serializer-callback
Add type-hints to serializer callback
2 parents 2473ec7 + 88c3f8b commit 7f3d131

File tree

3 files changed

+20
-18
lines changed

3 files changed

+20
-18
lines changed

src/DependencyInjection/Configuration.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace FOS\ElasticaBundle\DependencyInjection;
1313

14+
use FOS\ElasticaBundle\Serializer\Callback as SerializerCallback;
1415
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
1516
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
1617
use Symfony\Component\Config\Definition\ConfigurationInterface;
@@ -63,7 +64,7 @@ public function getConfigTreeBuilder()
6364
->arrayNode('serializer')
6465
->treatNullLike([])
6566
->children()
66-
->scalarNode('callback_class')->defaultValue('FOS\ElasticaBundle\Serializer\Callback')->end()
67+
->scalarNode('callback_class')->defaultValue(SerializerCallback::class)->end()
6768
->scalarNode('serializer')->defaultValue('serializer')->end()
6869
->end()
6970
->end()

src/Serializer/Callback.php

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,53 +22,54 @@ class Callback
2222
protected $version;
2323
protected $serializeNull = false;
2424

25-
/**
26-
* @param object $serializer
27-
*/
28-
public function setSerializer($serializer)
25+
public function setSerializer(object $serializer): self
2926
{
3027
$this->serializer = $serializer;
28+
3129
if (!\method_exists($this->serializer, 'serialize')) {
3230
throw new \RuntimeException('The serializer must have a "serialize" method.');
3331
}
32+
33+
return $this;
3434
}
3535

36-
public function setGroups(array $groups): void
36+
public function setGroups(array $groups): self
3737
{
3838
$this->groups = $groups;
3939

4040
if (!empty($this->groups) && !$this->serializer instanceof SerializerInterface && !$this->serializer instanceof JMSSerializer) {
41-
throw new \RuntimeException('Setting serialization groups requires using "JMS\Serializer\Serializer" or "Symfony\Component\Serializer\Serializer".');
41+
throw new \RuntimeException(\sprintf('Setting serialization groups requires using a "%s" or "%s" serializer instance.', SerializerInterface::class, JMSSerializer::class));
4242
}
43+
44+
return $this;
4345
}
4446

45-
/**
46-
* @param mixed $version
47-
*/
48-
public function setVersion($version): void
47+
public function setVersion(string $version): self
4948
{
5049
$this->version = $version;
5150

5251
if ($this->version && !$this->serializer instanceof JMSSerializer) {
53-
throw new \RuntimeException('Setting serialization version requires using "JMS\Serializer\Serializer".');
52+
throw new \RuntimeException(\sprintf('Setting serialization version requires using a "%s" serializer instance.', JMSSerializer::class));
5453
}
54+
55+
return $this;
5556
}
5657

57-
public function setSerializeNull(bool $serializeNull): void
58+
public function setSerializeNull(bool $serializeNull): self
5859
{
5960
$this->serializeNull = $serializeNull;
6061

6162
if (true === $this->serializeNull && !$this->serializer instanceof SerializerInterface && !$this->serializer instanceof JMSSerializer) {
62-
throw new \RuntimeException('Setting null value serialization option requires using "JMS\Serializer\Serializer" or "Symfony\Component\Serializer\Serializer".');
63+
throw new \RuntimeException(\sprintf('Setting null value serialization option requires using a "%s" or "%s" serializer instance.', SerializerInterface::class, JMSSerializer::class));
6364
}
65+
66+
return $this;
6467
}
6568

6669
/**
6770
* @param $object
68-
*
69-
* @return mixed
7071
*/
71-
public function serialize($object)
72+
public function serialize($object): string
7273
{
7374
$context = $this->serializer instanceof JMSSerializer ? SerializationContext::create()->enableMaxDepthChecks() : [];
7475

tests/Unit/Serializer/CallbackTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public function testSetGroupsFailsWithInvalidSerializer()
4242

4343
$this->expectException(\RuntimeException::class);
4444
$this->expectExceptionMessage(
45-
'Setting serialization groups requires using "JMS\Serializer\Serializer" or "Symfony\Component\Serializer\Serializer"'
45+
'Setting serialization groups requires using a "Symfony\Component\Serializer\SerializerInterface" or "JMS\Serializer\SerializerInterface" serializer instance.'
4646
);
4747

4848
$callback->setGroups(['foo']);

0 commit comments

Comments
 (0)