Skip to content

Commit 401c8d0

Browse files
[FIX][PHP-NEXTGEN] Missing tagged union discriminator literal (#20343) (#20356)
* fix: #20343 * chore: apply correct formatting chore: build and package --------- Co-authored-by: Christian Ascone <ascone.christian@gmail.com> --------- Co-authored-by: Christian Ascone <ascone.christian@gmail.com>
1 parent 4ea7f60 commit 401c8d0

File tree

3 files changed

+27
-11
lines changed

3 files changed

+27
-11
lines changed

modules/openapi-generator/src/main/resources/php-nextgen/model_generic.mustache

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,12 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par
190190
return self::$openAPIModelName;
191191
}
192192

193+
{{#discriminator}}
194+
{{#discriminator.mappedModels}}
195+
public const {{#lambda.uppercase}}{{discriminator.propertyName}}_{{#lambda.snakecase}}{{mappingName}}{{/lambda.snakecase}}{{/lambda.uppercase}} = '{{mappingName}}';
196+
{{/discriminator.mappedModels}}
197+
{{/discriminator}}
198+
{{^discriminator}}
193199
{{#vars}}
194200
{{#isEnum}}
195201
{{#allowableValues}}
@@ -199,6 +205,7 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par
199205
{{/allowableValues}}
200206
{{/isEnum}}
201207
{{/vars}}
208+
{{/discriminator}}
202209

203210
{{#vars}}
204211
{{#isEnum}}
@@ -210,8 +217,15 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par
210217
public function {{getter}}AllowableValues()
211218
{
212219
return [
220+
{{#discriminator}}
221+
{{#discriminator.mappedModels}}
222+
self::{{#lambda.uppercase}}{{discriminator.propertyName}}_{{#lambda.snakecase}}{{mappingName}}{{/lambda.snakecase}}{{/lambda.uppercase}},{{^-last}}
223+
{{/-last}}{{/discriminator.mappedModels}}
224+
{{/discriminator}}
225+
{{^discriminator}}
213226
{{#allowableValues}}{{#enumVars}}self::{{enumName}}_{{{name}}},{{^-last}}
214227
{{/-last}}{{/enumVars}}{{/allowableValues}}
228+
{{/discriminator}}
215229
];
216230
}
217231

@@ -233,18 +247,18 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par
233247
*/
234248
public function __construct(array $data = null)
235249
{
250+
{{#discriminator}}
251+
// Initialize discriminator property with the model name.
252+
$this->container['{{discriminatorName}}'] = static::$openAPIModelName;
253+
254+
{{/discriminator}}
236255
{{#parentSchema}}
237256
parent::__construct($data);
238257

239258
{{/parentSchema}}
240259
{{#vars}}
241260
$this->setIfExists('{{name}}', $data ?? [], {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}null{{/defaultValue}});
242261
{{/vars}}
243-
{{#discriminator}}
244-
245-
// Initialize discriminator property with the model name.
246-
$this->container['{{discriminatorName}}'] = static::$openAPIModelName;
247-
{{/discriminator}}
248262
}
249263

250264
/**

samples/client/petstore/php-nextgen/OpenAPIClient-php/src/Model/Animal.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,8 @@ public function getModelName(): string
233233
return self::$openAPIModelName;
234234
}
235235

236+
public const CLASS_NAME_CAT = 'CAT';
237+
public const CLASS_NAME_DOG = 'DOG';
236238

237239
/**
238240
* Associative array for storing property values
@@ -248,11 +250,11 @@ public function getModelName(): string
248250
*/
249251
public function __construct(array $data = null)
250252
{
251-
$this->setIfExists('class_name', $data ?? [], null);
252-
$this->setIfExists('color', $data ?? [], 'red');
253-
254253
// Initialize discriminator property with the model name.
255254
$this->container['class_name'] = static::$openAPIModelName;
255+
256+
$this->setIfExists('class_name', $data ?? [], null);
257+
$this->setIfExists('color', $data ?? [], 'red');
256258
}
257259

258260
/**

samples/client/petstore/php-nextgen/OpenAPIClient-php/src/Model/ParentWithNullable.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,11 +261,11 @@ public function getTypeAllowableValues()
261261
*/
262262
public function __construct(array $data = null)
263263
{
264-
$this->setIfExists('type', $data ?? [], null);
265-
$this->setIfExists('nullable_property', $data ?? [], null);
266-
267264
// Initialize discriminator property with the model name.
268265
$this->container['type'] = static::$openAPIModelName;
266+
267+
$this->setIfExists('type', $data ?? [], null);
268+
$this->setIfExists('nullable_property', $data ?? [], null);
269269
}
270270

271271
/**

0 commit comments

Comments
 (0)