From 47c14d565418f32a1aa7d8ba2ccc9cb0636c5966 Mon Sep 17 00:00:00 2001 From: Brian Ferri Date: Thu, 19 Dec 2024 15:40:39 +0100 Subject: [PATCH 1/2] fix: https://github.com/OpenAPITools/openapi-generator/issues/20343 --- .../main/resources/php-nextgen/model_generic.mustache | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/php-nextgen/model_generic.mustache b/modules/openapi-generator/src/main/resources/php-nextgen/model_generic.mustache index f79f51908882..89879c5a5403 100644 --- a/modules/openapi-generator/src/main/resources/php-nextgen/model_generic.mustache +++ b/modules/openapi-generator/src/main/resources/php-nextgen/model_generic.mustache @@ -190,6 +190,7 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par return self::$openAPIModelName; } + {{^discriminator}} {{#vars}} {{#isEnum}} {{#allowableValues}} @@ -199,6 +200,10 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par {{/allowableValues}} {{/isEnum}} {{/vars}} + {{/discriminator}} + {{#discriminator}}{{#mappedModels}} + public const {{#lambda.uppercase}}{{discriminator.propertyName}}_{{mappingName}}{{/lambda.uppercase}} = '{{mappingName}}'; + {{/mappedModels}}{{/discriminator}} {{#vars}} {{#isEnum}} @@ -210,8 +215,12 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par public function {{getter}}AllowableValues() { return [ + {{^discriminator}} {{#allowableValues}}{{#enumVars}}self::{{enumName}}_{{{name}}},{{^-last}} {{/-last}}{{/enumVars}}{{/allowableValues}} + {{/discriminator}} + {{#discriminator}}{{#mappedModels}}self::{{#lambda.uppercase}}{{discriminator.propertyName}}_{{mappingName}}{{/lambda.uppercase}},{{^-last}} + {{/-last}}{{/mappedModels}}{{/discriminator}} ]; } From 4a4bf6b1be9d5090d76f8a47e770454fefd2cea5 Mon Sep 17 00:00:00 2001 From: Brian Ferri Date: Thu, 19 Dec 2024 18:13:08 +0100 Subject: [PATCH 2/2] chore: apply correct formatting chore: build and package --------- Co-authored-by: Christian Ascone --- .../php-nextgen/model_generic.mustache | 33 +++++++++++-------- .../OpenAPIClient-php/src/Model/Animal.php | 8 +++-- .../src/Model/ParentWithNullable.php | 6 ++-- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/php-nextgen/model_generic.mustache b/modules/openapi-generator/src/main/resources/php-nextgen/model_generic.mustache index 89879c5a5403..c81f28e4190c 100644 --- a/modules/openapi-generator/src/main/resources/php-nextgen/model_generic.mustache +++ b/modules/openapi-generator/src/main/resources/php-nextgen/model_generic.mustache @@ -190,7 +190,12 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par return self::$openAPIModelName; } - {{^discriminator}} +{{#discriminator}} +{{#discriminator.mappedModels}} + public const {{#lambda.uppercase}}{{discriminator.propertyName}}_{{#lambda.snakecase}}{{mappingName}}{{/lambda.snakecase}}{{/lambda.uppercase}} = '{{mappingName}}'; +{{/discriminator.mappedModels}} +{{/discriminator}} +{{^discriminator}} {{#vars}} {{#isEnum}} {{#allowableValues}} @@ -200,10 +205,7 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par {{/allowableValues}} {{/isEnum}} {{/vars}} - {{/discriminator}} - {{#discriminator}}{{#mappedModels}} - public const {{#lambda.uppercase}}{{discriminator.propertyName}}_{{mappingName}}{{/lambda.uppercase}} = '{{mappingName}}'; - {{/mappedModels}}{{/discriminator}} +{{/discriminator}} {{#vars}} {{#isEnum}} @@ -215,12 +217,15 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par public function {{getter}}AllowableValues() { return [ - {{^discriminator}} +{{#discriminator}} +{{#discriminator.mappedModels}} + self::{{#lambda.uppercase}}{{discriminator.propertyName}}_{{#lambda.snakecase}}{{mappingName}}{{/lambda.snakecase}}{{/lambda.uppercase}},{{^-last}} +{{/-last}}{{/discriminator.mappedModels}} +{{/discriminator}} +{{^discriminator}} {{#allowableValues}}{{#enumVars}}self::{{enumName}}_{{{name}}},{{^-last}} {{/-last}}{{/enumVars}}{{/allowableValues}} - {{/discriminator}} - {{#discriminator}}{{#mappedModels}}self::{{#lambda.uppercase}}{{discriminator.propertyName}}_{{mappingName}}{{/lambda.uppercase}},{{^-last}} - {{/-last}}{{/mappedModels}}{{/discriminator}} +{{/discriminator}} ]; } @@ -242,6 +247,11 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par */ public function __construct(array $data = null) { + {{#discriminator}} + // Initialize discriminator property with the model name. + $this->container['{{discriminatorName}}'] = static::$openAPIModelName; + + {{/discriminator}} {{#parentSchema}} parent::__construct($data); @@ -249,11 +259,6 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par {{#vars}} $this->setIfExists('{{name}}', $data ?? [], {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}null{{/defaultValue}}); {{/vars}} - {{#discriminator}} - - // Initialize discriminator property with the model name. - $this->container['{{discriminatorName}}'] = static::$openAPIModelName; - {{/discriminator}} } /** diff --git a/samples/client/petstore/php-nextgen/OpenAPIClient-php/src/Model/Animal.php b/samples/client/petstore/php-nextgen/OpenAPIClient-php/src/Model/Animal.php index 3d9221bf7214..ff8d05b36e6d 100644 --- a/samples/client/petstore/php-nextgen/OpenAPIClient-php/src/Model/Animal.php +++ b/samples/client/petstore/php-nextgen/OpenAPIClient-php/src/Model/Animal.php @@ -233,6 +233,8 @@ public function getModelName(): string return self::$openAPIModelName; } + public const CLASS_NAME_CAT = 'CAT'; + public const CLASS_NAME_DOG = 'DOG'; /** * Associative array for storing property values @@ -248,11 +250,11 @@ public function getModelName(): string */ public function __construct(array $data = null) { - $this->setIfExists('class_name', $data ?? [], null); - $this->setIfExists('color', $data ?? [], 'red'); - // Initialize discriminator property with the model name. $this->container['class_name'] = static::$openAPIModelName; + + $this->setIfExists('class_name', $data ?? [], null); + $this->setIfExists('color', $data ?? [], 'red'); } /** diff --git a/samples/client/petstore/php-nextgen/OpenAPIClient-php/src/Model/ParentWithNullable.php b/samples/client/petstore/php-nextgen/OpenAPIClient-php/src/Model/ParentWithNullable.php index 21bb921932d4..bab081d0f9ee 100644 --- a/samples/client/petstore/php-nextgen/OpenAPIClient-php/src/Model/ParentWithNullable.php +++ b/samples/client/petstore/php-nextgen/OpenAPIClient-php/src/Model/ParentWithNullable.php @@ -261,11 +261,11 @@ public function getTypeAllowableValues() */ public function __construct(array $data = null) { - $this->setIfExists('type', $data ?? [], null); - $this->setIfExists('nullable_property', $data ?? [], null); - // Initialize discriminator property with the model name. $this->container['type'] = static::$openAPIModelName; + + $this->setIfExists('type', $data ?? [], null); + $this->setIfExists('nullable_property', $data ?? [], null); } /**