Skip to content

Commit ceb8a5a

Browse files
committed
Bump requirements
- add Symfony 7 support - remove support php < 8.2 (EOL) - remove symfony < 6.4 support Bug Fix - add missing $security{{name}} variable when using Bearer Auth Misc - use match instead of switch for simple assignments - remove default depth param from json_encode call - make data provider static (phpunit)
1 parent 3922973 commit ceb8a5a

12 files changed

Lines changed: 161 additions & 320 deletions

File tree

modules/openapi-generator/src/main/resources/php-symfony/Controller.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class Controller extends AbstractController
9292
$json = $this->exceptionToArray($exception);
9393
$json['statusCode'] = $statusCode;
9494
95-
return new Response(json_encode($json, 15, 512), $statusCode, $headers);
95+
return new Response(json_encode($json, 15), $statusCode, $headers);
9696
}
9797

9898
/**
@@ -219,7 +219,7 @@ class Controller extends AbstractController
219219
public static function isContentTypeAllowed(Request $request, array $consumes = []): bool
220220
{
221221
if (!empty($consumes) && $consumes[0] !== '*/*') {
222-
$currentFormat = $request->getContentType();
222+
$currentFormat = $request->getContentTypeFormat();
223223
foreach ($consumes as $mimeType) {
224224
// canonize mime type
225225
if (is_string($mimeType) && false !== $pos = strpos($mimeType, ';')) {
@@ -230,7 +230,7 @@ class Controller extends AbstractController
230230
// add custom format to request
231231
$format = $mimeType;
232232
$request->setFormat($format, $format);
233-
$currentFormat = $request->getContentType();
233+
$currentFormat = $request->getContentTypeFormat();
234234
}
235235

236236
if ($format === $currentFormat) {

modules/openapi-generator/src/main/resources/php-symfony/api_controller.mustache

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ class {{controllerName}} extends Controller
101101
// HTTP basic authentication required
102102
$security{{name}} = $request->headers->get('authorization');
103103
{{/isBasicBasic}}
104+
{{#isBasicBearer}}
105+
// HTTP bearer authentication required
106+
$security{{name}} = $request->headers->get('authorization');
107+
{{/isBasicBearer}}
104108
{{#isOAuth}}
105109
// Oauth required
106110
$security{{name}} = $request->headers->get('authorization');
@@ -148,7 +152,7 @@ class {{controllerName}} extends Controller
148152
{{#allParams}}
149153
{{^isFile}}
150154
{{#isBodyParam}}
151-
$inputFormat = $request->getMimeType($request->getContentType());
155+
$inputFormat = $request->getMimeType($request->getContentTypeFormat());
152156
${{paramName}} = $this->deserialize(${{paramName}}, '{{#isContainer}}{{#items}}array<{{dataType}}>{{/items}}{{/isContainer}}{{^isContainer}}{{#isEnumRef}}\{{modelPackage}}\{{dataType}}{{/isEnumRef}}{{^isEnumRef}}{{dataType}}{{/isEnumRef}}{{/isContainer}}', $inputFormat);
153157
{{/isBodyParam}}
154158
{{^isBodyParam}}
@@ -178,17 +182,12 @@ class {{controllerName}} extends Controller
178182

179183
{{#returnType}}$result = {{/returnType}}$handler->{{operationId}}({{#allParams}}${{paramName}}, {{/allParams}}$responseCode, $responseHeaders);
180184

181-
// Find default response message
182-
$message = '{{#responses}}{{#isDefault}}{{message}}{{/isDefault}}{{/responses}}';
183-
184-
// Find a more specific message, if available
185-
switch ($responseCode) {
185+
$message = match($responseCode) {
186186
{{#responses}}
187-
case {{code}}:
188-
$message = '{{message}}';
189-
break;
187+
{{code}} => '{{message}}',
190188
{{/responses}}
191-
}
189+
default => '{{#responses}}{{#isDefault}}{{message}}{{/isDefault}}{{/responses}}',
190+
};
192191

193192
return new Response(
194193
{{#returnType}}$result !== null ?$this->serialize($result, $responseFormat):''{{/returnType}}{{^returnType}}''{{/returnType}},

modules/openapi-generator/src/main/resources/php-symfony/composer.mustache

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,19 @@
2424
}
2525
],
2626
"require": {
27-
"php": ">=7.4.0|>=8.0.2",
27+
"php": ">=8.2",
2828
"ext-curl": "*",
2929
"ext-json": "*",
3030
"ext-mbstring": "*",
31-
"symfony/validator": "^5.0|^6.0",
32-
"jms/serializer-bundle": "^4.0",
33-
"symfony/framework-bundle": "^5.0|^6.0"
31+
"symfony/validator": "^6.4|^7.0",
32+
"jms/serializer-bundle": "^5.4",
33+
"symfony/framework-bundle": "^6.4|^7.0"
3434
},
3535
"require-dev": {
36-
"phpunit/phpunit": "^9.5",
37-
"friendsofphp/php-cs-fixer": "^2.16.3",
38-
"symfony/browser-kit": "^5.0|^6.0",
39-
"symfony/yaml": "^5.0|^6.0",
36+
"phpunit/phpunit": "^11.0",
37+
"friendsofphp/php-cs-fixer": "*",
38+
"symfony/browser-kit": "^6.4|7.0",
39+
"symfony/yaml": "^6.4|^7.0",
4040
"hoa/regex": "~1.0"
4141
},
4242
"autoload": {

modules/openapi-generator/src/main/resources/php-symfony/serialization/JmsSerializer.mustache

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,11 @@ class JmsSerializer implements SerializerInterface
4747

4848
private function convertFormat(string $format): ?string
4949
{
50-
switch ($format) {
51-
case 'application/json':
52-
return 'json';
53-
case 'application/xml':
54-
return 'xml';
55-
}
56-
57-
return null;
50+
return match($format) {
51+
'application/json' => 'json',
52+
'application/xml' => 'xml',
53+
default => null,
54+
};
5855
}
5956

6057
private function deserializeString($data, string $type)
@@ -132,22 +129,13 @@ class JmsSerializer implements SerializerInterface
132129
}
133130

134131
// Parse the string using the correct separator
135-
switch ($format) {
136-
case 'csv':
137-
$data = explode(',', $data);
138-
break;
139-
case 'ssv':
140-
$data = explode(' ', $data);
141-
break;
142-
case 'tsv':
143-
$data = explode("\t", $data);
144-
break;
145-
case 'pipes':
146-
$data = explode('|', $data);
147-
break;
148-
default;
149-
$data = [];
150-
}
132+
$data = match($format) {
133+
'csv' => explode(',', $data),
134+
'ssv' => explode(' ', $data),
135+
'tsv' => explode("\t", $data),
136+
'pipes' => explode('|', $data),
137+
default => [],
138+
};
151139

152140
// Deserialize each of the array elements
153141
foreach ($data as $key => $item) {

modules/openapi-generator/src/main/resources/php-symfony/testing/ControllerTest.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class ControllerTest extends TestCase
5555
);
5656
}
5757

58-
public function dataProviderIsContentTypeAllowed(): array
58+
public static function dataProviderIsContentTypeAllowed(): array
5959
{
6060
return [
6161
'usual JSON content type' => [

samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/Controller.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public function createErrorResponse(HttpException $exception): Response
102102
$json = $this->exceptionToArray($exception);
103103
$json['statusCode'] = $statusCode;
104104

105-
return new Response(json_encode($json, 15, 512), $statusCode, $headers);
105+
return new Response(json_encode($json, 15), $statusCode, $headers);
106106
}
107107

108108
/**
@@ -229,7 +229,7 @@ protected function getOutputFormat(string $accept, array $produced): ?string
229229
public static function isContentTypeAllowed(Request $request, array $consumes = []): bool
230230
{
231231
if (!empty($consumes) && $consumes[0] !== '*/*') {
232-
$currentFormat = $request->getContentType();
232+
$currentFormat = $request->getContentTypeFormat();
233233
foreach ($consumes as $mimeType) {
234234
// canonize mime type
235235
if (is_string($mimeType) && false !== $pos = strpos($mimeType, ';')) {
@@ -240,7 +240,7 @@ public static function isContentTypeAllowed(Request $request, array $consumes =
240240
// add custom format to request
241241
$format = $mimeType;
242242
$request->setFormat($format, $format);
243-
$currentFormat = $request->getContentType();
243+
$currentFormat = $request->getContentTypeFormat();
244244
}
245245

246246
if ($format === $currentFormat) {

samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/PetController.php

Lines changed: 42 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public function addPetAction(Request $request)
8888

8989
// Deserialize the input values that needs it
9090
try {
91-
$inputFormat = $request->getMimeType($request->getContentType());
91+
$inputFormat = $request->getMimeType($request->getContentTypeFormat());
9292
$pet = $this->deserialize($pet, 'OpenAPI\Server\Model\Pet', $inputFormat);
9393
} catch (SerializerRuntimeException $exception) {
9494
return $this->createBadRequestResponse($exception->getMessage());
@@ -117,18 +117,11 @@ public function addPetAction(Request $request)
117117

118118
$result = $handler->addPet($pet, $responseCode, $responseHeaders);
119119

120-
// Find default response message
121-
$message = '';
122-
123-
// Find a more specific message, if available
124-
switch ($responseCode) {
125-
case 200:
126-
$message = 'successful operation';
127-
break;
128-
case 405:
129-
$message = 'Invalid input';
130-
break;
131-
}
120+
$message = match($responseCode) {
121+
200 => 'successful operation',
122+
405 => 'Invalid input',
123+
default => '',
124+
};
132125

133126
return new Response(
134127
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -202,15 +195,10 @@ public function deletePetAction(Request $request, $petId)
202195

203196
$handler->deletePet($petId, $apiKey, $responseCode, $responseHeaders);
204197

205-
// Find default response message
206-
$message = '';
207-
208-
// Find a more specific message, if available
209-
switch ($responseCode) {
210-
case 400:
211-
$message = 'Invalid pet value';
212-
break;
213-
}
198+
$message = match($responseCode) {
199+
400 => 'Invalid pet value',
200+
default => '',
201+
};
214202

215203
return new Response(
216204
'',
@@ -291,18 +279,11 @@ public function findPetsByStatusAction(Request $request)
291279

292280
$result = $handler->findPetsByStatus($status, $responseCode, $responseHeaders);
293281

294-
// Find default response message
295-
$message = '';
296-
297-
// Find a more specific message, if available
298-
switch ($responseCode) {
299-
case 200:
300-
$message = 'successful operation';
301-
break;
302-
case 400:
303-
$message = 'Invalid status value';
304-
break;
305-
}
282+
$message = match($responseCode) {
283+
200 => 'successful operation',
284+
400 => 'Invalid status value',
285+
default => '',
286+
};
306287

307288
return new Response(
308289
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -382,18 +363,11 @@ public function findPetsByTagsAction(Request $request)
382363

383364
$result = $handler->findPetsByTags($tags, $responseCode, $responseHeaders);
384365

385-
// Find default response message
386-
$message = '';
387-
388-
// Find a more specific message, if available
389-
switch ($responseCode) {
390-
case 200:
391-
$message = 'successful operation';
392-
break;
393-
case 400:
394-
$message = 'Invalid tag value';
395-
break;
396-
}
366+
$message = match($responseCode) {
367+
200 => 'successful operation',
368+
400 => 'Invalid tag value',
369+
default => '',
370+
};
397371

398372
return new Response(
399373
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -468,21 +442,12 @@ public function getPetByIdAction(Request $request, $petId)
468442

469443
$result = $handler->getPetById($petId, $responseCode, $responseHeaders);
470444

471-
// Find default response message
472-
$message = '';
473-
474-
// Find a more specific message, if available
475-
switch ($responseCode) {
476-
case 200:
477-
$message = 'successful operation';
478-
break;
479-
case 400:
480-
$message = 'Invalid ID supplied';
481-
break;
482-
case 404:
483-
$message = 'Pet not found';
484-
break;
485-
}
445+
$message = match($responseCode) {
446+
200 => 'successful operation',
447+
400 => 'Invalid ID supplied',
448+
404 => 'Pet not found',
449+
default => '',
450+
};
486451

487452
return new Response(
488453
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -538,7 +503,7 @@ public function updatePetAction(Request $request)
538503

539504
// Deserialize the input values that needs it
540505
try {
541-
$inputFormat = $request->getMimeType($request->getContentType());
506+
$inputFormat = $request->getMimeType($request->getContentTypeFormat());
542507
$pet = $this->deserialize($pet, 'OpenAPI\Server\Model\Pet', $inputFormat);
543508
} catch (SerializerRuntimeException $exception) {
544509
return $this->createBadRequestResponse($exception->getMessage());
@@ -567,24 +532,13 @@ public function updatePetAction(Request $request)
567532

568533
$result = $handler->updatePet($pet, $responseCode, $responseHeaders);
569534

570-
// Find default response message
571-
$message = '';
572-
573-
// Find a more specific message, if available
574-
switch ($responseCode) {
575-
case 200:
576-
$message = 'successful operation';
577-
break;
578-
case 400:
579-
$message = 'Invalid ID supplied';
580-
break;
581-
case 404:
582-
$message = 'Pet not found';
583-
break;
584-
case 405:
585-
$message = 'Validation exception';
586-
break;
587-
}
535+
$message = match($responseCode) {
536+
200 => 'successful operation',
537+
400 => 'Invalid ID supplied',
538+
404 => 'Pet not found',
539+
405 => 'Validation exception',
540+
default => '',
541+
};
588542

589543
return new Response(
590544
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -666,15 +620,10 @@ public function updatePetWithFormAction(Request $request, $petId)
666620

667621
$handler->updatePetWithForm($petId, $name, $status, $responseCode, $responseHeaders);
668622

669-
// Find default response message
670-
$message = '';
671-
672-
// Find a more specific message, if available
673-
switch ($responseCode) {
674-
case 405:
675-
$message = 'Invalid input';
676-
break;
677-
}
623+
$message = match($responseCode) {
624+
405 => 'Invalid input',
625+
default => '',
626+
};
678627

679628
return new Response(
680629
'',
@@ -763,15 +712,10 @@ public function uploadFileAction(Request $request, $petId)
763712

764713
$result = $handler->uploadFile($petId, $additionalMetadata, $file, $responseCode, $responseHeaders);
765714

766-
// Find default response message
767-
$message = '';
768-
769-
// Find a more specific message, if available
770-
switch ($responseCode) {
771-
case 200:
772-
$message = 'successful operation';
773-
break;
774-
}
715+
$message = match($responseCode) {
716+
200 => 'successful operation',
717+
default => '',
718+
};
775719

776720
return new Response(
777721
$result !== null ?$this->serialize($result, $responseFormat):'',

0 commit comments

Comments
 (0)