4
4
5
5
namespace DoclerLabs \ApiClientGenerator \Generator ;
6
6
7
+ use DoclerLabs \ApiClientGenerator \Ast \ParameterNode ;
7
8
use DoclerLabs \ApiClientGenerator \Entity \Field ;
8
9
use DoclerLabs \ApiClientGenerator \Entity \Operation ;
9
10
use DoclerLabs \ApiClientGenerator \Entity \Request ;
@@ -98,10 +99,15 @@ protected function generateConstructor(Request $request): ?ClassMethod
98
99
if ($ field ->isRequired ()) {
99
100
array_push ($ paramInits , ...$ this ->generateValidationStmts ($ field ));
100
101
101
- $ params [] = $ this ->builder
102
+ $ param = $ this ->builder
102
103
->param ($ field ->getPhpVariableName ())
103
- ->setType ($ field ->getPhpTypeHint (), $ field ->isNullable ())
104
- ->getNode ();
104
+ ->setType ($ field ->getPhpTypeHint (), $ field ->isNullable ());
105
+
106
+ if (null !== $ field ->getDefault ()) {
107
+ $ param ->setDefault ($ field ->getDefault ());
108
+ }
109
+
110
+ $ params [] = $ param ->getNode ();
105
111
106
112
$ paramInits [] = $ this ->builder ->assign (
107
113
$ this ->builder ->localPropertyFetch ($ field ->getPhpVariableName ()),
@@ -129,6 +135,8 @@ protected function generateConstructor(Request $request): ?ClassMethod
129
135
return null ;
130
136
}
131
137
138
+ $ params = $ this ->sortParameters (...$ params );
139
+
132
140
return $ this ->builder
133
141
->method ('__construct ' )
134
142
->makePublic ()
@@ -138,7 +146,7 @@ protected function generateConstructor(Request $request): ?ClassMethod
138
146
->getNode ();
139
147
}
140
148
141
- protected function generateSetters (Request $ request ): array
149
+ private function generateSetters (Request $ request ): array
142
150
{
143
151
$ statements = [];
144
152
foreach ($ request ->getFields () as $ fields ) {
@@ -152,7 +160,7 @@ protected function generateSetters(Request $request): array
152
160
return $ statements ;
153
161
}
154
162
155
- protected function generateGetContentType (): ClassMethod
163
+ private function generateGetContentType (): ClassMethod
156
164
{
157
165
$ return = $ this ->builder ->return ($ this ->builder ->localPropertyFetch ('contentType ' ));
158
166
$ returnType = 'string ' ;
@@ -166,7 +174,7 @@ protected function generateGetContentType(): ClassMethod
166
174
->getNode ();
167
175
}
168
176
169
- protected function generateGetMethod (Request $ request ): ClassMethod
177
+ private function generateGetMethod (Request $ request ): ClassMethod
170
178
{
171
179
$ return = $ this ->builder ->return ($ this ->builder ->val ($ request ->getMethod ()));
172
180
$ returnType = 'string ' ;
@@ -180,7 +188,7 @@ protected function generateGetMethod(Request $request): ClassMethod
180
188
->getNode ();
181
189
}
182
190
183
- protected function generateGetRoute (Request $ request ): ClassMethod
191
+ private function generateGetRoute (Request $ request ): ClassMethod
184
192
{
185
193
$ values = [];
186
194
$ returnType = 'string ' ;
@@ -216,7 +224,7 @@ protected function generateGetRoute(Request $request): ClassMethod
216
224
->getNode ();
217
225
}
218
226
219
- protected function generateGetParametersMethods (Request $ request ): array
227
+ private function generateGetParametersMethods (Request $ request ): array
220
228
{
221
229
$ methods = [];
222
230
$ fields = $ request ->getFields ();
@@ -238,7 +246,7 @@ protected function generateGetParametersMethods(Request $request): array
238
246
return $ methods ;
239
247
}
240
248
241
- protected function generateGetParametersMethod (string $ methodName , array $ fields ): ClassMethod
249
+ private function generateGetParametersMethod (string $ methodName , array $ fields ): ClassMethod
242
250
{
243
251
$ returnVal = $ this ->builder ->array ([]);
244
252
$ fieldsArr = [];
@@ -260,7 +268,7 @@ protected function generateGetParametersMethod(string $methodName, array $fields
260
268
->getNode ();
261
269
}
262
270
263
- protected function generateGetRawParametersMethod (string $ methodName , array $ fields ): ClassMethod
271
+ private function generateGetRawParametersMethod (string $ methodName , array $ fields ): ClassMethod
264
272
{
265
273
$ fieldsArr = [];
266
274
$ returnType = 'array ' ;
@@ -277,7 +285,7 @@ protected function generateGetRawParametersMethod(string $methodName, array $fie
277
285
->getNode ();
278
286
}
279
287
280
- protected function generateGetBody (?Field $ body ): ClassMethod
288
+ private function generateGetBody (?Field $ body ): ClassMethod
281
289
{
282
290
if ($ body !== null ) {
283
291
$ returnType = $ body ->getPhpTypeHint ();
@@ -369,4 +377,16 @@ private function generateParametersFromFields(array $fields): FuncCall
369
377
]
370
378
);
371
379
}
380
+
381
+ private function sortParameters (ParameterNode ...$ parameterNodes ): array
382
+ {
383
+ usort (
384
+ $ parameterNodes ,
385
+ static function (ParameterNode $ paramA , ParameterNode $ paramB ) {
386
+ return $ paramA ->default <=> $ paramB ->default ;
387
+ }
388
+ );
389
+
390
+ return $ parameterNodes ;
391
+ }
372
392
}
0 commit comments