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 f79f5190888..c81f28e4190 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,12 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par return self::$openAPIModelName; } +{{#discriminator}} +{{#discriminator.mappedModels}} + public const {{#lambda.uppercase}}{{discriminator.propertyName}}_{{#lambda.snakecase}}{{mappingName}}{{/lambda.snakecase}}{{/lambda.uppercase}} = '{{mappingName}}'; +{{/discriminator.mappedModels}} +{{/discriminator}} +{{^discriminator}} {{#vars}} {{#isEnum}} {{#allowableValues}} @@ -199,6 +205,7 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par {{/allowableValues}} {{/isEnum}} {{/vars}} +{{/discriminator}} {{#vars}} {{#isEnum}} @@ -210,8 +217,15 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par public function {{getter}}AllowableValues() { return [ +{{#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}} ]; } @@ -233,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); @@ -240,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 3d9221bf721..ff8d05b36e6 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 @@ class Animal implements ModelInterface, ArrayAccess, JsonSerializable 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 @@ class Animal implements ModelInterface, ArrayAccess, JsonSerializable */ 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 21bb921932d..bab081d0f9e 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 @@ class ParentWithNullable implements ModelInterface, ArrayAccess, JsonSerializabl */ 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); } /**