diff --git a/docs/generators/php-dt.md b/docs/generators/php-dt.md
index a61f3cd351c..6f9dae63804 100644
--- a/docs/generators/php-dt.md
+++ b/docs/generators/php-dt.md
@@ -40,7 +40,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
## LANGUAGE PRIMITIVES
-- DateTime
- array
- bool
- boolean
diff --git a/docs/generators/php-laravel.md b/docs/generators/php-laravel.md
index b28504c1d02..fa6717217ad 100644
--- a/docs/generators/php-laravel.md
+++ b/docs/generators/php-laravel.md
@@ -39,7 +39,8 @@ These options may be applied as additional-properties (cli) or configOptions (pl
## LANGUAGE PRIMITIVES
-- DateTime
+- \DateTime
+- \SplFileObject
- array
- bool
- boolean
diff --git a/docs/generators/php-lumen.md b/docs/generators/php-lumen.md
index 28f4810873d..1c39477ad47 100644
--- a/docs/generators/php-lumen.md
+++ b/docs/generators/php-lumen.md
@@ -39,7 +39,8 @@ These options may be applied as additional-properties (cli) or configOptions (pl
## LANGUAGE PRIMITIVES
-- DateTime
+- \DateTime
+- \SplFileObject
- array
- bool
- boolean
diff --git a/docs/generators/php-mezzio-ph.md b/docs/generators/php-mezzio-ph.md
index 8460e439084..35bedda05f9 100644
--- a/docs/generators/php-mezzio-ph.md
+++ b/docs/generators/php-mezzio-ph.md
@@ -40,7 +40,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
## LANGUAGE PRIMITIVES
-- DateTime
- array
- bool
- boolean
diff --git a/docs/generators/php-slim-deprecated.md b/docs/generators/php-slim-deprecated.md
index 838b14ab7c3..d6f8b35c7f2 100644
--- a/docs/generators/php-slim-deprecated.md
+++ b/docs/generators/php-slim-deprecated.md
@@ -39,7 +39,8 @@ These options may be applied as additional-properties (cli) or configOptions (pl
## LANGUAGE PRIMITIVES
-- DateTime
+- \DateTime
+- \SplFileObject
- array
- bool
- boolean
diff --git a/docs/generators/php-slim4.md b/docs/generators/php-slim4.md
index 5e0ec649254..ae6cc1cb656 100644
--- a/docs/generators/php-slim4.md
+++ b/docs/generators/php-slim4.md
@@ -40,7 +40,8 @@ These options may be applied as additional-properties (cli) or configOptions (pl
## LANGUAGE PRIMITIVES
-- DateTime
+- \DateTime
+- \SplFileObject
- array
- bool
- boolean
diff --git a/docs/generators/php-symfony.md b/docs/generators/php-symfony.md
index 03112d4ff8b..4d268ab389e 100644
--- a/docs/generators/php-symfony.md
+++ b/docs/generators/php-symfony.md
@@ -45,6 +45,8 @@ These options may be applied as additional-properties (cli) or configOptions (pl
## LANGUAGE PRIMITIVES
+- UploadedFile
+- \DateTime
- array
- bool
- byte
diff --git a/docs/generators/php.md b/docs/generators/php.md
index 8a99d592df2..dcee69588f4 100644
--- a/docs/generators/php.md
+++ b/docs/generators/php.md
@@ -40,7 +40,8 @@ These options may be applied as additional-properties (cli) or configOptions (pl
## LANGUAGE PRIMITIVES
-- DateTime
+- \DateTime
+- \SplFileObject
- array
- bool
- boolean
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 2805cd301ee..077555a5743 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
@@ -90,7 +90,8 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
"string",
"object",
"array",
- "DateTime",
+ "\\DateTime",
+ "\\SplFileObject",
"mixed",
"number",
"void",
@@ -111,6 +112,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
typeMapping.put("long", "int");
typeMapping.put("number", "float");
typeMapping.put("float", "float");
+ typeMapping.put("decimal", "float");
typeMapping.put("double", "double");
typeMapping.put("string", "string");
typeMapping.put("byte", "int");
@@ -341,6 +343,12 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
public String getSchemaType(Schema p) {
String openAPIType = super.getSchemaType(p);
String type = null;
+
+ if (openAPIType == null) {
+ LOGGER.error("OpenAPI Type for {} is null. Default to UNKNOWN_OPENAPI_TYPE instead.", p.getName());
+ openAPIType = "UNKNOWN_OPENAPI_TYPE";
+ }
+
if (typeMapping.containsKey(openAPIType)) {
type = typeMapping.get(openAPIType);
if (languageSpecificPrimitives.contains(type)) {
@@ -348,12 +356,18 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
} else if (instantiationTypes.containsKey(type)) {
return type;
}
+ /*
+ // comment out the following as php-dt, php-mezzio still need to treat DateTime, SplFileObject as objects
+ } else {
+ throw new RuntimeException("OpenAPI type `" + openAPIType + "` defined but can't mapped to language type." +
+ " Please report the issue via OpenAPI Generator github repo." +
+ " (if you're not using custom format with proper type mappings provided to openapi-generator)");
+ }
+ */
} else {
type = openAPIType;
}
- if (type == null) {
- return null;
- }
+
return toModelName(type);
}
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpDataTransferClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpDataTransferClientCodegen.java
index 38fc3332ee1..d50c1326958 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpDataTransferClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpDataTransferClientCodegen.java
@@ -95,6 +95,10 @@ public class PhpDataTransferClientCodegen extends AbstractPhpCodegen {
//no point to use double - http://php.net/manual/en/language.types.float.php , especially because of PHP 7+ float type declaration
typeMapping.put("double", "float");
+ // remove these from primitive types to make the output works
+ languageSpecificPrimitives.remove("\\DateTime");
+ languageSpecificPrimitives.remove("\\SplFileObject");
+
apiTemplateFiles.clear();
apiTestTemplateFiles.clear();
apiDocTemplateFiles.clear();
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java
index 529c5a27e21..06388626d4c 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java
@@ -87,6 +87,10 @@ public class PhpMezzioPathHandlerServerCodegen extends AbstractPhpCodegen {
//no point to use double - http://php.net/manual/en/language.types.float.php , especially because of PHP 7+ float type declaration
typeMapping.put("double", "float");
+ // remove these from primitive types to make the output works
+ languageSpecificPrimitives.remove("\\DateTime");
+ languageSpecificPrimitives.remove("\\SplFileObject");
+
embeddedTemplateDir = templateDir = "php-mezzio-ph";
invokerPackage = "App";
srcBasePath = "src" + File.separator + "App";
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java
index 705185cf220..17d970d39c5 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java
@@ -151,7 +151,9 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
"number",
"void",
"byte",
- "array"
+ "array",
+ "\\DateTime",
+ "UploadedFile"
)
);
@@ -174,6 +176,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
typeMapping = new HashMap();
typeMapping.put("integer", "int");
typeMapping.put("long", "int");
+ typeMapping.put("decimal", "float");
typeMapping.put("number", "float");
typeMapping.put("float", "float");
typeMapping.put("double", "double");
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java
index ca12192f278..926d90732b7 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java
@@ -76,7 +76,7 @@ public class PhpModelTest {
final CodegenProperty property3 = cm.vars.get(2);
Assert.assertEquals(property3.baseName, "createdAt");
- Assert.assertEquals(property3.complexType, "\\DateTime");
+ Assert.assertEquals(property3.complexType, null);
Assert.assertEquals(property3.dataType, "\\DateTime");
Assert.assertEquals(property3.name, "created_at");
Assert.assertEquals(property3.defaultValue, null);
diff --git a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/FormatTest.md b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/FormatTest.md
index 28f426d0cf8..2ce2f9dcb85 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/FormatTest.md
+++ b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/FormatTest.md
@@ -10,12 +10,12 @@ Name | Type | Description | Notes
**number** | **float** | |
**float** | **float** | | [optional]
**double** | **double** | | [optional]
-**decimal** | [**Decimal**](Decimal.md) | | [optional]
+**decimal** | **float** | | [optional]
**string** | **string** | | [optional]
**byte** | **string** | |
-**binary** | [**\SplFileObject**](\SplFileObject.md) | | [optional]
-**date** | [**\DateTime**](\DateTime.md) | |
-**date_time** | [**\DateTime**](\DateTime.md) | | [optional]
+**binary** | **\SplFileObject** | | [optional]
+**date** | **\DateTime** | |
+**date_time** | **\DateTime** | | [optional]
**uuid** | **string** | | [optional]
**password** | **string** | |
**pattern_with_digits** | **string** | A string that is a 10 digit number. Can have leading zeros. | [optional]
diff --git a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MixedPropertiesAndAdditionalPropertiesClass.md
index cdc5e7093de..d86cc9fccce 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MixedPropertiesAndAdditionalPropertiesClass.md
+++ b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/MixedPropertiesAndAdditionalPropertiesClass.md
@@ -5,7 +5,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**uuid** | **string** | | [optional]
-**date_time** | [**\DateTime**](\DateTime.md) | | [optional]
+**date_time** | **\DateTime** | | [optional]
**map** | [**array**](Animal.md) | | [optional]
[[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md)
diff --git a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/NullableClass.md b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/NullableClass.md
index 14cacbbd4d3..83b78eaa819 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/NullableClass.md
+++ b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/NullableClass.md
@@ -8,8 +8,8 @@ Name | Type | Description | Notes
**number_prop** | **float** | | [optional]
**boolean_prop** | **bool** | | [optional]
**string_prop** | **string** | | [optional]
-**date_prop** | [**\DateTime**](\DateTime.md) | | [optional]
-**datetime_prop** | [**\DateTime**](\DateTime.md) | | [optional]
+**date_prop** | **\DateTime** | | [optional]
+**datetime_prop** | **\DateTime** | | [optional]
**array_nullable_prop** | **object[]** | | [optional]
**array_and_items_nullable_prop** | **object[]** | | [optional]
**array_items_nullable** | **object[]** | | [optional]
diff --git a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/Order.md b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/Order.md
index 14c7ef9fbe5..c6ec90a33c1 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/docs/Model/Order.md
+++ b/samples/client/petstore/php/OpenAPIClient-php/docs/Model/Order.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
**id** | **int** | | [optional]
**pet_id** | **int** | | [optional]
**quantity** | **int** | | [optional]
-**ship_date** | [**\DateTime**](\DateTime.md) | | [optional]
+**ship_date** | **\DateTime** | | [optional]
**status** | **string** | Order Status | [optional]
**complete** | **bool** | | [optional] [default to false]
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php
index deed199f79a..42017054335 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php
@@ -65,7 +65,7 @@ class FormatTest implements ModelInterface, ArrayAccess, \JsonSerializable
'number' => 'float',
'float' => 'float',
'double' => 'double',
- 'decimal' => 'Decimal',
+ 'decimal' => 'float',
'string' => 'string',
'byte' => 'string',
'binary' => '\SplFileObject',
@@ -554,7 +554,7 @@ class FormatTest implements ModelInterface, ArrayAccess, \JsonSerializable
/**
* Gets decimal
*
- * @return Decimal|null
+ * @return float|null
*/
public function getDecimal()
{
@@ -564,7 +564,7 @@ class FormatTest implements ModelInterface, ArrayAccess, \JsonSerializable
/**
* Sets decimal
*
- * @param Decimal|null $decimal decimal
+ * @param float|null $decimal decimal
*
* @return self
*/
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php
index c82083b1c99..69188fda3ec 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php
@@ -86,7 +86,7 @@ class ObjectSerializer
foreach ($data::openAPITypes() as $property => $openAPIType) {
$getter = $data::getters()[$property];
$value = $data->$getter();
- if ($value !== null && !in_array($openAPIType, ['DateTime', 'array', 'bool', 'boolean', 'byte', 'double', 'float', 'int', 'integer', 'mixed', 'number', 'object', 'string', 'void'], true)) {
+ if ($value !== null && !in_array($openAPIType, ['\DateTime', '\SplFileObject', 'array', 'bool', 'boolean', 'byte', 'double', 'float', 'int', 'integer', 'mixed', 'number', 'object', 'string', 'void'], true)) {
$callable = [$openAPIType, 'getAllowableEnumValues'];
if (is_callable($callable)) {
/** array $callable */
@@ -330,7 +330,7 @@ class ObjectSerializer
}
/** @psalm-suppress ParadoxicalCondition */
- if (in_array($class, ['DateTime', 'array', 'bool', 'boolean', 'byte', 'double', 'float', 'int', 'integer', 'mixed', 'number', 'object', 'string', 'void'], true)) {
+ if (in_array($class, ['\DateTime', '\SplFileObject', 'array', 'bool', 'boolean', 'byte', 'double', 'float', 'int', 'integer', 'mixed', 'number', 'object', 'string', 'void'], true)) {
settype($data, $class);
return $data;
}
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 32e11e6c107..c7dbd850eb6 100644
--- a/samples/server/petstore/php-laravel/lib/app/Models/FormatTest.php
+++ b/samples/server/petstore/php-laravel/lib/app/Models/FormatTest.php
@@ -27,7 +27,7 @@ class FormatTest {
/** @var double $double */
private $double;
- /** @var Decimal $decimal */
+ /** @var float $decimal */
private $decimal;
/** @var string $string */
diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/Resources/docs/Model/Order.md b/samples/server/petstore/php-symfony/SymfonyBundle-php/Resources/docs/Model/Order.md
index ee823c472c3..63a984cd357 100644
--- a/samples/server/petstore/php-symfony/SymfonyBundle-php/Resources/docs/Model/Order.md
+++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/Resources/docs/Model/Order.md
@@ -6,7 +6,7 @@ Name | Type | Description | Notes
**id** | **int** | | [optional]
**petId** | **int** | | [optional]
**quantity** | **int** | | [optional]
-**shipDate** | [**\DateTime**](\DateTime.md) | | [optional]
+**shipDate** | **\DateTime** | | [optional]
**status** | **string** | Order Status | [optional]
**complete** | **bool** | | [optional] [default to false]