[php Symfony] fix return type for non json/xml api

This fixes the generated returned type of controller methods for
endpoint with a response declared like

    content:
      text/plain:
        schema:
          type: <boolean|string|integer|number>

or for

    content:
      image/png:
        schema:
          type: string
          format: binary

Without this commit the generated method *had to* return a value that
matched "array|object|null", which does not work in this case.
This commit makes it possible to return the proper type.
This commit is contained in:
Guillaume Turri 2025-05-09 23:46:48 +02:00
parent d300ae9a41
commit bb18191411
5 changed files with 17 additions and 7 deletions

View File

@ -417,7 +417,17 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
op.vendorExtensions.put("x-comment-type", "void");
}
// Create a variable to add typing for return value of interface
if (op.returnType != null) {
if ("bool".equals(op.returnType)) {
op.vendorExtensions.put("x-return-type", "bool");
} else if ("UploadedFile".equals(op.returnType)) {
op.vendorExtensions.put("x-return-type", "string");
} else if ("int".equals(op.returnType)) {
op.vendorExtensions.put("x-return-type", "int");
} else if ("float".equals(op.returnType)) {
op.vendorExtensions.put("x-return-type", "float");
} else if ("string".equals(op.returnType)) {
op.vendorExtensions.put("x-return-type", "string");
} else if (op.returnType != null) {
op.vendorExtensions.put("x-return-type", "array|object|null");
} else {
op.vendorExtensions.put("x-return-type", "void");

View File

@ -77,12 +77,12 @@ interface StoreApiInterface
* @param int &$responseCode The HTTP Response Code
* @param array $responseHeaders Additional HTTP headers to return with the response ()
*
* @return array|object|null
* @return int
*/
public function getInventory(
int &$responseCode,
array &$responseHeaders
): array|object|null;
): int;
/**
* Operation getOrderById

View File

@ -147,14 +147,14 @@ interface UserApiInterface
* @param int &$responseCode The HTTP Response Code
* @param array $responseHeaders Additional HTTP headers to return with the response ()
*
* @return array|object|null
* @return string
*/
public function loginUser(
string $username,
string $password,
int &$responseCode,
array &$responseHeaders
): array|object|null;
): string;
/**
* Operation logoutUser

View File

@ -107,7 +107,7 @@ class StoreApi implements StoreApiInterface
/**
* Implementation of StoreApiInterface#getInventory
*/
public function getInventory(int &$responseCode, array &$responseHeaders): array|object|null
public function getInventory(int &$responseCode, array &$responseHeaders): int
{
// Implement the operation ...
}

View File

@ -351,7 +351,7 @@ class UserApi implements UserApiInterface
/**
* Implementation of UserApiInterface#loginUser
*/
public function loginUser(string $username, string $password, int &$responseCode, array &$responseHeaders): array|object|null
public function loginUser(string $username, string $password, int &$responseCode, array &$responseHeaders): string
{
// Implement the operation ...
}