From a37d18a7e486d4237c27c7f270af1a936be1f96c Mon Sep 17 00:00:00 2001 From: Thomas Hansen Date: Thu, 6 Oct 2022 18:45:33 +0200 Subject: [PATCH] [PHP] Bugfix: DateTime object on query (#13583) * [PHP] BUGFIX: fix code breaking when query params contain a DateTime object * [PHP] Autogenerated files --- .../src/main/resources/php/ObjectSerializer.mustache | 5 +++++ .../php/OpenAPIClient-php/lib/ObjectSerializer.php | 5 +++++ .../php/OpenAPIClient-php/tests/ObjectSerializerTest.php | 9 +++++++++ 3 files changed, 19 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache b/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache index 20122a95505..476938159f0 100644 --- a/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache +++ b/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache @@ -180,6 +180,11 @@ class ObjectSerializer } } + # Handle DateTime objects in query + if($openApiType === "\\DateTime" && $value instanceof \DateTime) { + return ["{$paramName}" => $value->format(self::$dateTimeFormat)]; + } + $query = []; $value = (in_array($openApiType, ['object', 'array'], true)) ? (array)$value : $value; diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php index 75ff53fec69..665c477884a 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php +++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php @@ -189,6 +189,11 @@ class ObjectSerializer } } + # Handle DateTime objects in query + if($openApiType === "\\DateTime" && $value instanceof \DateTime) { + return ["{$paramName}" => $value->format(self::$dateTimeFormat)]; + } + $query = []; $value = (in_array($openApiType, ['object', 'array'], true)) ? (array)$value : $value; diff --git a/samples/client/petstore/php/OpenAPIClient-php/tests/ObjectSerializerTest.php b/samples/client/petstore/php/OpenAPIClient-php/tests/ObjectSerializerTest.php index 64693660b74..8743611a520 100644 --- a/samples/client/petstore/php/OpenAPIClient-php/tests/ObjectSerializerTest.php +++ b/samples/client/petstore/php/OpenAPIClient-php/tests/ObjectSerializerTest.php @@ -327,6 +327,15 @@ class ObjectSerializerTest extends TestCase true, 'filter%5Bor%5D%5B0%5D%5Bname%5D=John&filter%5Bor%5D%5B1%5D%5Bemail%5D=john%40doe.com' ], + 'form DateTime object, explode on, required true' => [ + new DateTime('2021-10-06T20:17:16'), 'dateTime', '\DateTime', 'form', true, true, 'dateTime=2021-10-06T20%3A17%3A16%2B00%3A00', + ], + 'form null DateTime object, explode on, required true' => [ + null, 'dateTime', '\DateTime', 'form', true, true, 'dateTime=', + ], + 'form null DateTime object, explode on, required false' => [ + null, 'dateTime', '\DateTime', 'form', true, false, '', + ], ]; }