[php-symfony] Don't crash at runtime on null convertFormat

$this->convertFormat may return "null". When it's the case we end up
calling

    ...->serialize($data, null);

but this crashes at runtime because that serialize method declares that
the 2nd parameter is of type "string" (so null is not accepted).

With this patch we avoid having an error 500. Instead we return something
that makes perfect sense when the OpenApi specification declares a content
of type "text/plain" and that the returned value is for instance a string,
an int, or a boolean.
This commit is contained in:
Guillaume Turri 2025-05-09 21:23:30 +02:00
parent 7b7c15ce6c
commit 36217ad7dc
2 changed files with 14 additions and 2 deletions

View File

@ -29,7 +29,13 @@ class JmsSerializer implements SerializerInterface
*/
public function serialize($data, string $format): string
{
return SerializerBuilder::create()->build()->serialize($data, $this->convertFormat($format));
$convertFormat = $this->convertFormat($format);
if ($convertFormat !== null) {
return SerializerBuilder::create()->build()->serialize($data, $convertFormat);
} else {
// don't use var_export if $data is already a string: it may corrupt binary strings
return is_string($data) ? $data : var_export($data, true);
}
}
/**

View File

@ -29,7 +29,13 @@ class JmsSerializer implements SerializerInterface
*/
public function serialize($data, string $format): string
{
return SerializerBuilder::create()->build()->serialize($data, $this->convertFormat($format));
$convertFormat = $this->convertFormat($format);
if ($convertFormat !== null) {
return SerializerBuilder::create()->build()->serialize($data, $convertFormat);
} else {
// don't use var_export if $data is already a string: it may corrupt binary strings
return is_string($data) ? $data : var_export($data, true);
}
}
/**