From 76eddeb7133fb5a549a077b907bce92da52278ec Mon Sep 17 00:00:00 2001 From: William Cheng Date: Fri, 27 May 2022 11:16:26 +0800 Subject: [PATCH] php-laravel, enum models, nullable and default values (#12480) * + support for enum models & separating mustache templates for enums and generics + extract property 'type' and 'default value' from a #ref to an enum model + support for `PascalCase` naming convention for PHP generators + use a default value for known basic types when they are not nullable + use 'null' as default value for nullable types when they do not specify the default value + use defined constant path as enum default value when found * + sample output update * + change model fields to be public and acessible from outside * + sample output update Co-authored-by: Mostafa Aghajani --- .../codegen/languages/AbstractPhpCodegen.java | 2 + .../languages/PhpLaravelServerCodegen.java | 96 +++++++++++++++++++ .../main/resources/php-laravel/model.mustache | 22 ++--- .../resources/php-laravel/model_enum.mustache | 28 ++++++ .../php-laravel/model_generic.mustache | 11 +++ .../app/Models/AdditionalPropertiesClass.php | 4 +- .../lib/app/Models/AllOfWithSingleRef.php | 6 +- .../php-laravel/lib/app/Models/Animal.php | 4 +- .../lib/app/Models/ApiResponse.php | 6 +- .../app/Models/ArrayOfArrayOfNumberOnly.php | 2 +- .../lib/app/Models/ArrayOfNumberOnly.php | 2 +- .../php-laravel/lib/app/Models/ArrayTest.php | 6 +- .../lib/app/Models/Capitalization.php | 12 +-- .../php-laravel/lib/app/Models/Cat.php | 6 +- .../php-laravel/lib/app/Models/CatAllOf.php | 2 +- .../php-laravel/lib/app/Models/Category.php | 4 +- .../php-laravel/lib/app/Models/ClassModel.php | 3 +- .../php-laravel/lib/app/Models/Client.php | 2 +- .../lib/app/Models/DeprecatedObject.php | 2 +- .../php-laravel/lib/app/Models/Dog.php | 6 +- .../php-laravel/lib/app/Models/DogAllOf.php | 2 +- .../php-laravel/lib/app/Models/EnumArrays.php | 4 +- .../php-laravel/lib/app/Models/EnumClass.php | 23 ++++- .../php-laravel/lib/app/Models/EnumTest.php | 24 ++--- .../php-laravel/lib/app/Models/File.php | 3 +- .../lib/app/Models/FileSchemaTestClass.php | 4 +- .../php-laravel/lib/app/Models/Foo.php | 2 +- .../lib/app/Models/FooGetDefaultResponse.php | 2 +- .../php-laravel/lib/app/Models/FormatTest.php | 32 +++---- .../lib/app/Models/HasOnlyReadOnly.php | 4 +- .../lib/app/Models/HealthCheckResult.php | 5 +- .../lib/app/Models/InlineResponseDefault.php | 2 +- .../php-laravel/lib/app/Models/MapTest.php | 8 +- ...PropertiesAndAdditionalPropertiesClass.php | 6 +- .../lib/app/Models/Model200Response.php | 5 +- .../php-laravel/lib/app/Models/ModelList.php | 2 +- .../lib/app/Models/ModelReturn.php | 3 +- .../php-laravel/lib/app/Models/Name.php | 9 +- .../lib/app/Models/NullableClass.php | 44 ++++----- .../php-laravel/lib/app/Models/NumberOnly.php | 2 +- .../app/Models/ObjectWithDeprecatedFields.php | 8 +- .../php-laravel/lib/app/Models/Order.php | 12 +-- .../lib/app/Models/OuterComposite.php | 6 +- .../php-laravel/lib/app/Models/OuterEnum.php | 23 ++++- .../lib/app/Models/OuterEnumDefaultValue.php | 23 ++++- .../lib/app/Models/OuterEnumInteger.php | 23 ++++- .../Models/OuterEnumIntegerDefaultValue.php | 23 ++++- .../Models/OuterObjectWithEnumProperty.php | 4 +- .../php-laravel/lib/app/Models/Pet.php | 12 +-- .../lib/app/Models/ReadOnlyFirst.php | 4 +- .../lib/app/Models/SingleRefType.php | 20 +++- .../lib/app/Models/SpecialModelName.php | 2 +- .../php-laravel/lib/app/Models/Tag.php | 4 +- .../php-laravel/lib/app/Models/User.php | 16 ++-- 54 files changed, 427 insertions(+), 165 deletions(-) create mode 100644 modules/openapi-generator/src/main/resources/php-laravel/model_enum.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-laravel/model_generic.mustache diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java index 985a74c08b00..eb081db64460 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java @@ -408,6 +408,8 @@ public String toVarName(String name) { // return the name in camelCase style // phone_number => phoneNumber name = camelize(name, true); + } else if ("PascalCase".equals(variableNamingConvention)) { + name = camelize(name, false); } else { // default to snake case // return the name in underscore style // PhoneNumber => phone_number diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java index c2b27f479773..71162ddf6658 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLaravelServerCodegen.java @@ -18,12 +18,16 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.CodegenProperty; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.meta.features.*; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.OperationMap; import org.openapitools.codegen.model.OperationsMap; +import org.openapitools.codegen.utils.ModelUtils; + +import io.swagger.v3.oas.models.media.Schema; import java.io.File; import java.util.*; @@ -296,4 +300,96 @@ protected String toControllerName(String name) { return camelize(name, false) + "Controller"; } + + @Override + protected String getEnumDefaultValue(String defaultValue, String dataType) { + return defaultValue; + } + + @Override + public CodegenProperty fromProperty(String name, Schema p) { + CodegenProperty property = super.fromProperty(name, p); + Schema referencedSchema = ModelUtils.getReferencedSchema(this.openAPI, p); + + //Referenced enum case: + if (!property.isEnum && referencedSchema.getEnum() != null && !referencedSchema.getEnum().isEmpty()) { + property.dataType = this.getSchemaType(referencedSchema); + property.defaultValue = this.toDefaultValue(referencedSchema); + List _enum = referencedSchema.getEnum(); + + Map allowableValues = new HashMap<>(); + allowableValues.put("values", _enum); + if (allowableValues.size() > 0) { + property.allowableValues = allowableValues; + } + } + + return property; + } + + @Override + public String toDefaultValue(Schema p) { + if (ModelUtils.isBooleanSchema(p)) { + if (p.getDefault() != null) { + return p.getDefault().toString(); + } else if (!Boolean.TRUE.equals(p.getNullable())) { + return "false"; + } + } else if (ModelUtils.isDateSchema(p)) { + // TODO + } else if (ModelUtils.isDateTimeSchema(p)) { + // TODO + } else if (ModelUtils.isFileSchema(p)) { + // TODO + } else if (ModelUtils.isNumberSchema(p)) { + if (p.getDefault() != null) { + return p.getDefault().toString(); + } else if (!Boolean.TRUE.equals(p.getNullable())) { + return "0"; + } + } else if (ModelUtils.isIntegerSchema(p)) { + if (p.getDefault() != null) { + return p.getDefault().toString(); + } else if (!Boolean.TRUE.equals(p.getNullable())) { + return "0"; + } + } else if (ModelUtils.isStringSchema(p)) { + if (p.getDefault() != null) { + return "'" + p.getDefault() + "'"; + } else if (!Boolean.TRUE.equals(p.getNullable())) { + return "\"\""; + } + } else if (ModelUtils.isArraySchema(p)) { + if (p.getDefault() != null) { + return p.getDefault().toString(); + } else if (!Boolean.TRUE.equals(p.getNullable())) { + return "[]"; + } + } + + return null; + } + + @Override + public String toEnumDefaultValue(String value, String datatype) { + return datatype + "::" + value; + } + + @Override + public String toEnumVarName(String value, String datatype) { + if (value.length() == 0) { + return super.toEnumVarName(value, datatype); + } + + // number + if ("int".equals(datatype) || "double".equals(datatype) || "float".equals(datatype)) { + String varName = "NUMBER_" + value; + varName = varName.replaceAll("-", "MINUS_"); + varName = varName.replaceAll("\\+", "PLUS_"); + varName = varName.replaceAll("\\.", "_DOT_"); + return varName; + } + + return super.toEnumVarName(value, datatype); + } } diff --git a/modules/openapi-generator/src/main/resources/php-laravel/model.mustache b/modules/openapi-generator/src/main/resources/php-laravel/model.mustache index 966dd38ff036..13eedb983725 100644 --- a/modules/openapi-generator/src/main/resources/php-laravel/model.mustache +++ b/modules/openapi-generator/src/main/resources/php-laravel/model.mustache @@ -1,21 +1,17 @@ model_enum}}{{/isEnum}}{{^isEnum}}{{>model_generic}}{{/isEnum}} +{{/model}} +{{/models}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-laravel/model_enum.mustache b/modules/openapi-generator/src/main/resources/php-laravel/model_enum.mustache new file mode 100644 index 000000000000..721f6b08ad84 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-laravel/model_enum.mustache @@ -0,0 +1,28 @@ +class {{classname}} +{ + /** + * Possible values of this enum + */ + {{#allowableValues}} + {{#enumVars}} + const {{{name}}} = {{{value}}}; + + {{/enumVars}} + {{/allowableValues}} + /** + * Gets allowable values of the enum + * @return string[] + */ + public static function getAllowableEnumValues() + { + return [ + {{#allowableValues}} + {{#enumVars}} + self::{{{name}}}{{^-last}}, + {{/-last}} + {{/enumVars}} + {{/allowableValues}} + + ]; + } +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-laravel/model_generic.mustache b/modules/openapi-generator/src/main/resources/php-laravel/model_generic.mustache new file mode 100644 index 000000000000..dffa20ce4c07 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-laravel/model_generic.mustache @@ -0,0 +1,11 @@ +class {{classname}} { + + {{#vars}} + /** @var {{{dataType}}}{{#isNullable}}|null{{/isNullable}} ${{name}} {{description}}*/ +{{#deprecated}} + /** @deprecated */ +{{/deprecated}} + public ${{name}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}{{#isNullable}} = null{{/isNullable}}{{/defaultValue}}; + + {{/vars}} +} \ No newline at end of file diff --git a/samples/server/petstore/php-laravel/lib/app/Models/AdditionalPropertiesClass.php b/samples/server/petstore/php-laravel/lib/app/Models/AdditionalPropertiesClass.php index b6fbf24d048e..4723a9b14505 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/AdditionalPropertiesClass.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/AdditionalPropertiesClass.php @@ -10,9 +10,9 @@ class AdditionalPropertiesClass { /** @var array $mapProperty */ - private $mapProperty; + public $mapProperty; /** @var array> $mapOfMapProperty */ - private $mapOfMapProperty; + public $mapOfMapProperty; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/AllOfWithSingleRef.php b/samples/server/petstore/php-laravel/lib/app/Models/AllOfWithSingleRef.php index 1bc1bdac99d6..24ce4ab5c834 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/AllOfWithSingleRef.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/AllOfWithSingleRef.php @@ -10,9 +10,9 @@ class AllOfWithSingleRef { /** @var string $username */ - private $username; + public $username = ""; - /** @var SingleRefType $singleRefType */ - private $singleRefType; + /** @var SingleRefType|null $singleRefType */ + public $singleRefType = null; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Animal.php b/samples/server/petstore/php-laravel/lib/app/Models/Animal.php index 7435e7c2c0df..849e9d293702 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Animal.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Animal.php @@ -10,9 +10,9 @@ class Animal { /** @var string $className */ - private $className; + public $className = ""; /** @var string $color */ - private $color; + public $color = 'red'; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/ApiResponse.php b/samples/server/petstore/php-laravel/lib/app/Models/ApiResponse.php index e9f556871bce..7bef1cdcd228 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/ApiResponse.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/ApiResponse.php @@ -10,12 +10,12 @@ class ApiResponse { /** @var int $code */ - private $code; + public $code = 0; /** @var string $type */ - private $type; + public $type = ""; /** @var string $message */ - private $message; + public $message = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/ArrayOfArrayOfNumberOnly.php b/samples/server/petstore/php-laravel/lib/app/Models/ArrayOfArrayOfNumberOnly.php index b1266485890c..eef6c7cee6be 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/ArrayOfArrayOfNumberOnly.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/ArrayOfArrayOfNumberOnly.php @@ -10,6 +10,6 @@ class ArrayOfArrayOfNumberOnly { /** @var float[][] $arrayArrayNumber */ - private $arrayArrayNumber; + public $arrayArrayNumber = []; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/ArrayOfNumberOnly.php b/samples/server/petstore/php-laravel/lib/app/Models/ArrayOfNumberOnly.php index 234a196f0c75..10148db76ab9 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/ArrayOfNumberOnly.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/ArrayOfNumberOnly.php @@ -10,6 +10,6 @@ class ArrayOfNumberOnly { /** @var float[] $arrayNumber */ - private $arrayNumber; + public $arrayNumber = []; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/ArrayTest.php b/samples/server/petstore/php-laravel/lib/app/Models/ArrayTest.php index fbb4b21ada8d..bb1d9976ae1b 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/ArrayTest.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/ArrayTest.php @@ -10,12 +10,12 @@ class ArrayTest { /** @var string[] $arrayOfString */ - private $arrayOfString; + public $arrayOfString = []; /** @var int[][] $arrayArrayOfInteger */ - private $arrayArrayOfInteger; + public $arrayArrayOfInteger = []; /** @var \app\Models\ReadOnlyFirst[][] $arrayArrayOfModel */ - private $arrayArrayOfModel; + public $arrayArrayOfModel = []; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Capitalization.php b/samples/server/petstore/php-laravel/lib/app/Models/Capitalization.php index a8779787ecaf..9e7df6f9195a 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Capitalization.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Capitalization.php @@ -10,21 +10,21 @@ class Capitalization { /** @var string $smallCamel */ - private $smallCamel; + public $smallCamel = ""; /** @var string $capitalCamel */ - private $capitalCamel; + public $capitalCamel = ""; /** @var string $smallSnake */ - private $smallSnake; + public $smallSnake = ""; /** @var string $capitalSnake */ - private $capitalSnake; + public $capitalSnake = ""; /** @var string $sCAETHFlowPoints */ - private $sCAETHFlowPoints; + public $sCAETHFlowPoints = ""; /** @var string $aTTNAME Name of the pet*/ - private $aTTNAME; + public $aTTNAME = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Cat.php b/samples/server/petstore/php-laravel/lib/app/Models/Cat.php index 976181f474ce..dc1051497f72 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Cat.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Cat.php @@ -10,12 +10,12 @@ class Cat { /** @var string $className */ - private $className; + public $className = ""; /** @var string $color */ - private $color; + public $color = 'red'; /** @var bool $declawed */ - private $declawed; + public $declawed = false; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/CatAllOf.php b/samples/server/petstore/php-laravel/lib/app/Models/CatAllOf.php index ee2fd0f4c12d..6e02243b0d35 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/CatAllOf.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/CatAllOf.php @@ -10,6 +10,6 @@ class CatAllOf { /** @var bool $declawed */ - private $declawed; + public $declawed = false; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Category.php b/samples/server/petstore/php-laravel/lib/app/Models/Category.php index 58a9362f2d2d..d55589dbcb2f 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Category.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Category.php @@ -10,9 +10,9 @@ class Category { /** @var int $id */ - private $id; + public $id = 0; /** @var string $name */ - private $name; + public $name = 'default-name'; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/ClassModel.php b/samples/server/petstore/php-laravel/lib/app/Models/ClassModel.php index fbc93a019937..ec6bc6e01d8c 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/ClassModel.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/ClassModel.php @@ -6,10 +6,11 @@ /** * ClassModel + * @description Model for testing model with \"_class\" property */ class ClassModel { /** @var string $class */ - private $class; + public $class = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Client.php b/samples/server/petstore/php-laravel/lib/app/Models/Client.php index 35358e061057..3bd5f9d0a2b0 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Client.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Client.php @@ -10,6 +10,6 @@ class Client { /** @var string $client */ - private $client; + public $client = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/DeprecatedObject.php b/samples/server/petstore/php-laravel/lib/app/Models/DeprecatedObject.php index d25a9f5c2155..ab953b1b5a32 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/DeprecatedObject.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/DeprecatedObject.php @@ -10,6 +10,6 @@ class DeprecatedObject { /** @var string $name */ - private $name; + public $name = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Dog.php b/samples/server/petstore/php-laravel/lib/app/Models/Dog.php index 342d76fdb68f..c089badb0dd9 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Dog.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Dog.php @@ -10,12 +10,12 @@ class Dog { /** @var string $className */ - private $className; + public $className = ""; /** @var string $color */ - private $color; + public $color = 'red'; /** @var string $breed */ - private $breed; + public $breed = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/DogAllOf.php b/samples/server/petstore/php-laravel/lib/app/Models/DogAllOf.php index ae0daf91bb5d..97b9fa650a17 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/DogAllOf.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/DogAllOf.php @@ -10,6 +10,6 @@ class DogAllOf { /** @var string $breed */ - private $breed; + public $breed = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/EnumArrays.php b/samples/server/petstore/php-laravel/lib/app/Models/EnumArrays.php index d01dec52879b..deced9baf3c0 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/EnumArrays.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/EnumArrays.php @@ -10,9 +10,9 @@ class EnumArrays { /** @var string $justSymbol */ - private $justSymbol; + public $justSymbol = ""; /** @var string[] $arrayEnum */ - private $arrayEnum; + public $arrayEnum = []; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/EnumClass.php b/samples/server/petstore/php-laravel/lib/app/Models/EnumClass.php index 84f07bbf73e4..f1122eae53cb 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/EnumClass.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/EnumClass.php @@ -7,6 +7,27 @@ /** * EnumClass */ -class EnumClass { +class EnumClass +{ + /** + * Possible values of this enum + */ + const ABC = '_abc'; + const EFG = '-efg'; + + const XYZ = '(xyz)'; + + /** + * Gets allowable values of the enum + * @return string[] + */ + public static function getAllowableEnumValues() + { + return [ + self::ABC, + self::EFG, + self::XYZ + ]; + } } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/EnumTest.php b/samples/server/petstore/php-laravel/lib/app/Models/EnumTest.php index ce1eb85dd8dc..b188f1e86f0c 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/EnumTest.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/EnumTest.php @@ -10,27 +10,27 @@ class EnumTest { /** @var string $enumString */ - private $enumString; + public $enumString = ""; /** @var string $enumStringRequired */ - private $enumStringRequired; + public $enumStringRequired = ""; /** @var int $enumInteger */ - private $enumInteger; + public $enumInteger = 0; /** @var double $enumNumber */ - private $enumNumber; + public $enumNumber = 0; - /** @var \app\Models\OuterEnum $outerEnum */ - private $outerEnum; + /** @var string|null $outerEnum */ + public $outerEnum = null; - /** @var \app\Models\OuterEnumInteger $outerEnumInteger */ - private $outerEnumInteger; + /** @var int $outerEnumInteger */ + public $outerEnumInteger = \app\Models\OuterEnumInteger::NUMBER_0; - /** @var \app\Models\OuterEnumDefaultValue $outerEnumDefaultValue */ - private $outerEnumDefaultValue; + /** @var string $outerEnumDefaultValue */ + public $outerEnumDefaultValue = \app\Models\OuterEnumDefaultValue::PLACED; - /** @var \app\Models\OuterEnumIntegerDefaultValue $outerEnumIntegerDefaultValue */ - private $outerEnumIntegerDefaultValue; + /** @var int $outerEnumIntegerDefaultValue */ + public $outerEnumIntegerDefaultValue = \app\Models\OuterEnumIntegerDefaultValue::NUMBER_0; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/File.php b/samples/server/petstore/php-laravel/lib/app/Models/File.php index ec0215ae1048..e545d139bfa7 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/File.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/File.php @@ -6,10 +6,11 @@ /** * File + * @description Must be named `File` for test. */ class File { /** @var string $sourceURI Test capitalization*/ - private $sourceURI; + public $sourceURI = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/FileSchemaTestClass.php b/samples/server/petstore/php-laravel/lib/app/Models/FileSchemaTestClass.php index 64fe925c123c..da7de36f078c 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/FileSchemaTestClass.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/FileSchemaTestClass.php @@ -10,9 +10,9 @@ class FileSchemaTestClass { /** @var \app\Models\File $file */ - private $file; + public $file; /** @var \app\Models\File[] $files */ - private $files; + public $files = []; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Foo.php b/samples/server/petstore/php-laravel/lib/app/Models/Foo.php index 96d9bcf87050..190be91729b9 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Foo.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Foo.php @@ -10,6 +10,6 @@ class Foo { /** @var string $bar */ - private $bar; + public $bar = 'bar'; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/FooGetDefaultResponse.php b/samples/server/petstore/php-laravel/lib/app/Models/FooGetDefaultResponse.php index 8e85ac6f3f8f..d1398404aa39 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/FooGetDefaultResponse.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/FooGetDefaultResponse.php @@ -10,6 +10,6 @@ class FooGetDefaultResponse { /** @var \app\Models\Foo $string */ - private $string; + public $string; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/FormatTest.php b/samples/server/petstore/php-laravel/lib/app/Models/FormatTest.php index c7dbd850eb6d..d5114123c6b9 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/FormatTest.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/FormatTest.php @@ -10,51 +10,51 @@ class FormatTest { /** @var int $integer */ - private $integer; + public $integer = 0; /** @var int $int32 */ - private $int32; + public $int32 = 0; /** @var int $int64 */ - private $int64; + public $int64 = 0; /** @var float $number */ - private $number; + public $number = 0; /** @var float $float */ - private $float; + public $float = 0; /** @var double $double */ - private $double; + public $double = 0; /** @var float $decimal */ - private $decimal; + public $decimal = ""; /** @var string $string */ - private $string; + public $string = ""; /** @var string $byte */ - private $byte; + public $byte = ""; /** @var \SplFileObject $binary */ - private $binary; + public $binary; /** @var \DateTime $date */ - private $date; + public $date; /** @var \DateTime $dateTime */ - private $dateTime; + public $dateTime; /** @var string $uuid */ - private $uuid; + public $uuid = ""; /** @var string $password */ - private $password; + public $password = ""; /** @var string $patternWithDigits A string that is a 10 digit number. Can have leading zeros.*/ - private $patternWithDigits; + public $patternWithDigits = ""; /** @var string $patternWithDigitsAndDelimiter A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.*/ - private $patternWithDigitsAndDelimiter; + public $patternWithDigitsAndDelimiter = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/HasOnlyReadOnly.php b/samples/server/petstore/php-laravel/lib/app/Models/HasOnlyReadOnly.php index ecea2a0d4d91..9bddb5c13e1d 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/HasOnlyReadOnly.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/HasOnlyReadOnly.php @@ -10,9 +10,9 @@ class HasOnlyReadOnly { /** @var string $bar */ - private $bar; + public $bar = ""; /** @var string $foo */ - private $foo; + public $foo = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/HealthCheckResult.php b/samples/server/petstore/php-laravel/lib/app/Models/HealthCheckResult.php index 6117de37ec8f..ed344226c432 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/HealthCheckResult.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/HealthCheckResult.php @@ -6,10 +6,11 @@ /** * HealthCheckResult + * @description Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model. */ class HealthCheckResult { - /** @var string $nullableMessage */ - private $nullableMessage; + /** @var string|null $nullableMessage */ + public $nullableMessage = null; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/InlineResponseDefault.php b/samples/server/petstore/php-laravel/lib/app/Models/InlineResponseDefault.php index 492517d312a6..b9bfae57b0d8 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/InlineResponseDefault.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/InlineResponseDefault.php @@ -10,6 +10,6 @@ class InlineResponseDefault { /** @var \app\Models\Foo $string */ - private $string; + public $string; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/MapTest.php b/samples/server/petstore/php-laravel/lib/app/Models/MapTest.php index 4da0831f2b2b..0db48d078380 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/MapTest.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/MapTest.php @@ -10,15 +10,15 @@ class MapTest { /** @var array> $mapMapOfString */ - private $mapMapOfString; + public $mapMapOfString; /** @var array $mapOfEnumString */ - private $mapOfEnumString; + public $mapOfEnumString; /** @var array $directMap */ - private $directMap; + public $directMap; /** @var array $indirectMap */ - private $indirectMap; + public $indirectMap; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/MixedPropertiesAndAdditionalPropertiesClass.php b/samples/server/petstore/php-laravel/lib/app/Models/MixedPropertiesAndAdditionalPropertiesClass.php index 6e60f59408c5..fdef699e28d9 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/MixedPropertiesAndAdditionalPropertiesClass.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/MixedPropertiesAndAdditionalPropertiesClass.php @@ -10,12 +10,12 @@ class MixedPropertiesAndAdditionalPropertiesClass { /** @var string $uuid */ - private $uuid; + public $uuid = ""; /** @var \DateTime $dateTime */ - private $dateTime; + public $dateTime; /** @var array $map */ - private $map; + public $map; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Model200Response.php b/samples/server/petstore/php-laravel/lib/app/Models/Model200Response.php index a5c928983b6c..8cce1700b2d3 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Model200Response.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Model200Response.php @@ -6,13 +6,14 @@ /** * Model200Response + * @description Model for testing model name starting with number */ class Model200Response { /** @var int $name */ - private $name; + public $name = 0; /** @var string $class */ - private $class; + public $class = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/ModelList.php b/samples/server/petstore/php-laravel/lib/app/Models/ModelList.php index fe53b6dc79e7..7b7e554f2574 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/ModelList.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/ModelList.php @@ -10,6 +10,6 @@ class ModelList { /** @var string $_123list */ - private $_123list; + public $_123list = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/ModelReturn.php b/samples/server/petstore/php-laravel/lib/app/Models/ModelReturn.php index e8d9d76df4fa..af5746619e5d 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/ModelReturn.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/ModelReturn.php @@ -6,10 +6,11 @@ /** * ModelReturn + * @description Model for testing reserved words */ class ModelReturn { /** @var int $return */ - private $return; + public $return = 0; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Name.php b/samples/server/petstore/php-laravel/lib/app/Models/Name.php index 5cb44dc7fbee..7024516636ec 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Name.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Name.php @@ -6,19 +6,20 @@ /** * Name + * @description Model for testing model name same as property name */ class Name { /** @var int $name */ - private $name; + public $name = 0; /** @var int $snakeCase */ - private $snakeCase; + public $snakeCase = 0; /** @var string $property */ - private $property; + public $property = ""; /** @var int $_123number */ - private $_123number; + public $_123number = 0; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/NullableClass.php b/samples/server/petstore/php-laravel/lib/app/Models/NullableClass.php index 49079451568a..ddae5194493b 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/NullableClass.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/NullableClass.php @@ -9,40 +9,40 @@ */ class NullableClass { - /** @var int $integerProp */ - private $integerProp; + /** @var int|null $integerProp */ + public $integerProp = null; - /** @var float $numberProp */ - private $numberProp; + /** @var float|null $numberProp */ + public $numberProp = null; - /** @var bool $booleanProp */ - private $booleanProp; + /** @var bool|null $booleanProp */ + public $booleanProp = null; - /** @var string $stringProp */ - private $stringProp; + /** @var string|null $stringProp */ + public $stringProp = null; - /** @var \DateTime $dateProp */ - private $dateProp; + /** @var \DateTime|null $dateProp */ + public $dateProp = null; - /** @var \DateTime $datetimeProp */ - private $datetimeProp; + /** @var \DateTime|null $datetimeProp */ + public $datetimeProp = null; - /** @var object[] $arrayNullableProp */ - private $arrayNullableProp; + /** @var object[]|null $arrayNullableProp */ + public $arrayNullableProp = null; - /** @var object[] $arrayAndItemsNullableProp */ - private $arrayAndItemsNullableProp; + /** @var object[]|null $arrayAndItemsNullableProp */ + public $arrayAndItemsNullableProp = null; /** @var object[] $arrayItemsNullable */ - private $arrayItemsNullable; + public $arrayItemsNullable = []; - /** @var array $objectNullableProp */ - private $objectNullableProp; + /** @var array|null $objectNullableProp */ + public $objectNullableProp = null; - /** @var array $objectAndItemsNullableProp */ - private $objectAndItemsNullableProp; + /** @var array|null $objectAndItemsNullableProp */ + public $objectAndItemsNullableProp = null; /** @var array $objectItemsNullable */ - private $objectItemsNullable; + public $objectItemsNullable; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/NumberOnly.php b/samples/server/petstore/php-laravel/lib/app/Models/NumberOnly.php index 08b7fdcce6d0..8b6f6d27c1ac 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/NumberOnly.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/NumberOnly.php @@ -10,6 +10,6 @@ class NumberOnly { /** @var float $justNumber */ - private $justNumber; + public $justNumber = 0; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/ObjectWithDeprecatedFields.php b/samples/server/petstore/php-laravel/lib/app/Models/ObjectWithDeprecatedFields.php index 47b30e1579a6..1db69d23d8d8 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/ObjectWithDeprecatedFields.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/ObjectWithDeprecatedFields.php @@ -10,18 +10,18 @@ class ObjectWithDeprecatedFields { /** @var string $uuid */ - private $uuid; + public $uuid = ""; /** @var float $id */ /** @deprecated */ - private $id; + public $id = 0; /** @var \app\Models\DeprecatedObject $deprecatedRef */ /** @deprecated */ - private $deprecatedRef; + public $deprecatedRef; /** @var string[] $bars */ /** @deprecated */ - private $bars; + public $bars = []; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Order.php b/samples/server/petstore/php-laravel/lib/app/Models/Order.php index c6c557095f2c..7a064af737c7 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Order.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Order.php @@ -10,21 +10,21 @@ class Order { /** @var int $id */ - private $id; + public $id = 0; /** @var int $petId */ - private $petId; + public $petId = 0; /** @var int $quantity */ - private $quantity; + public $quantity = 0; /** @var \DateTime $shipDate */ - private $shipDate; + public $shipDate; /** @var string $status Order Status*/ - private $status; + public $status = ""; /** @var bool $complete */ - private $complete; + public $complete = false; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/OuterComposite.php b/samples/server/petstore/php-laravel/lib/app/Models/OuterComposite.php index a4872293639a..66c8ae3048b0 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/OuterComposite.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/OuterComposite.php @@ -10,12 +10,12 @@ class OuterComposite { /** @var float $myNumber */ - private $myNumber; + public $myNumber = 0; /** @var string $myString */ - private $myString; + public $myString = ""; /** @var bool $myBoolean */ - private $myBoolean; + public $myBoolean = false; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/OuterEnum.php b/samples/server/petstore/php-laravel/lib/app/Models/OuterEnum.php index b432df169d59..7b03d248858b 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/OuterEnum.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/OuterEnum.php @@ -7,6 +7,27 @@ /** * OuterEnum */ -class OuterEnum { +class OuterEnum +{ + /** + * Possible values of this enum + */ + const PLACED = 'placed'; + const APPROVED = 'approved'; + + const DELIVERED = 'delivered'; + + /** + * Gets allowable values of the enum + * @return string[] + */ + public static function getAllowableEnumValues() + { + return [ + self::PLACED, + self::APPROVED, + self::DELIVERED + ]; + } } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumDefaultValue.php b/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumDefaultValue.php index 079fe7847902..f87bd723df50 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumDefaultValue.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumDefaultValue.php @@ -7,6 +7,27 @@ /** * OuterEnumDefaultValue */ -class OuterEnumDefaultValue { +class OuterEnumDefaultValue +{ + /** + * Possible values of this enum + */ + const PLACED = 'placed'; + const APPROVED = 'approved'; + + const DELIVERED = 'delivered'; + + /** + * Gets allowable values of the enum + * @return string[] + */ + public static function getAllowableEnumValues() + { + return [ + self::PLACED, + self::APPROVED, + self::DELIVERED + ]; + } } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumInteger.php b/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumInteger.php index 848b9a89f3f2..fdf2e5a34234 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumInteger.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumInteger.php @@ -7,6 +7,27 @@ /** * OuterEnumInteger */ -class OuterEnumInteger { +class OuterEnumInteger +{ + /** + * Possible values of this enum + */ + const NUMBER_0 = 0; + const NUMBER_1 = 1; + + const NUMBER_2 = 2; + + /** + * Gets allowable values of the enum + * @return string[] + */ + public static function getAllowableEnumValues() + { + return [ + self::NUMBER_0, + self::NUMBER_1, + self::NUMBER_2 + ]; + } } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumIntegerDefaultValue.php b/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumIntegerDefaultValue.php index 93c9f08672e4..926c7f65c13f 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumIntegerDefaultValue.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/OuterEnumIntegerDefaultValue.php @@ -7,6 +7,27 @@ /** * OuterEnumIntegerDefaultValue */ -class OuterEnumIntegerDefaultValue { +class OuterEnumIntegerDefaultValue +{ + /** + * Possible values of this enum + */ + const NUMBER_0 = 0; + const NUMBER_1 = 1; + + const NUMBER_2 = 2; + + /** + * Gets allowable values of the enum + * @return string[] + */ + public static function getAllowableEnumValues() + { + return [ + self::NUMBER_0, + self::NUMBER_1, + self::NUMBER_2 + ]; + } } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/OuterObjectWithEnumProperty.php b/samples/server/petstore/php-laravel/lib/app/Models/OuterObjectWithEnumProperty.php index b2bd8d779644..0d090f09dd80 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/OuterObjectWithEnumProperty.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/OuterObjectWithEnumProperty.php @@ -9,7 +9,7 @@ */ class OuterObjectWithEnumProperty { - /** @var \app\Models\OuterEnumInteger $value */ - private $value; + /** @var int $value */ + public $value = \app\Models\OuterEnumInteger::NUMBER_0; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Pet.php b/samples/server/petstore/php-laravel/lib/app/Models/Pet.php index ae8fd93efc66..96c232377548 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Pet.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Pet.php @@ -10,21 +10,21 @@ class Pet { /** @var int $id */ - private $id; + public $id = 0; /** @var \app\Models\Category $category */ - private $category; + public $category; /** @var string $name */ - private $name; + public $name = ""; /** @var string[] $photoUrls */ - private $photoUrls; + public $photoUrls = []; /** @var \app\Models\Tag[] $tags */ - private $tags; + public $tags = []; /** @var string $status pet status in the store*/ - private $status; + public $status = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/ReadOnlyFirst.php b/samples/server/petstore/php-laravel/lib/app/Models/ReadOnlyFirst.php index e914f1ff0085..04a23e104f51 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/ReadOnlyFirst.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/ReadOnlyFirst.php @@ -10,9 +10,9 @@ class ReadOnlyFirst { /** @var string $bar */ - private $bar; + public $bar = ""; /** @var string $baz */ - private $baz; + public $baz = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/SingleRefType.php b/samples/server/petstore/php-laravel/lib/app/Models/SingleRefType.php index 79b06d77b4e2..cb9a558106f7 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/SingleRefType.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/SingleRefType.php @@ -7,6 +7,24 @@ /** * SingleRefType */ -class SingleRefType { +class SingleRefType +{ + /** + * Possible values of this enum + */ + const ADMIN = 'admin'; + const USER = 'user'; + + /** + * Gets allowable values of the enum + * @return string[] + */ + public static function getAllowableEnumValues() + { + return [ + self::ADMIN, + self::USER + ]; + } } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/SpecialModelName.php b/samples/server/petstore/php-laravel/lib/app/Models/SpecialModelName.php index 6ea1fd10ebb4..2e9c108eaa82 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/SpecialModelName.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/SpecialModelName.php @@ -10,6 +10,6 @@ class SpecialModelName { /** @var int $specialPropertyName */ - private $specialPropertyName; + public $specialPropertyName = 0; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/Tag.php b/samples/server/petstore/php-laravel/lib/app/Models/Tag.php index fb8469f95615..d260b2982a79 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/Tag.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/Tag.php @@ -10,9 +10,9 @@ class Tag { /** @var int $id */ - private $id; + public $id = 0; /** @var string $name */ - private $name; + public $name = ""; } diff --git a/samples/server/petstore/php-laravel/lib/app/Models/User.php b/samples/server/petstore/php-laravel/lib/app/Models/User.php index 3688537ba8c8..a80c8bd77c4c 100644 --- a/samples/server/petstore/php-laravel/lib/app/Models/User.php +++ b/samples/server/petstore/php-laravel/lib/app/Models/User.php @@ -10,27 +10,27 @@ class User { /** @var int $id */ - private $id; + public $id = 0; /** @var string $username */ - private $username; + public $username = ""; /** @var string $firstName */ - private $firstName; + public $firstName = ""; /** @var string $lastName */ - private $lastName; + public $lastName = ""; /** @var string $email */ - private $email; + public $email = ""; /** @var string $password */ - private $password; + public $password = ""; /** @var string $phone */ - private $phone; + public $phone = ""; /** @var int $userStatus User Status*/ - private $userStatus; + public $userStatus = 0; }