@@ -243,22 +243,30 @@ public function serialize()
243
243
$ cloneVar = array ($ this , 'cloneVar ' );
244
244
245
245
foreach ($ this ->data ['forms_by_hash ' ] as &$ form ) {
246
- if ($ form ['type_class ' ] instanceof Data) {
247
- continue ;
248
- }
249
- $ form ['view_vars ' ] = array_map ($ cloneVar , $ form ['view_vars ' ]);
250
- $ form ['type_class ' ] = $ cloneVar ($ form ['type_class ' ], true );
251
- $ form ['synchronized ' ] = $ cloneVar ($ form ['synchronized ' ]);
252
- $ form ['passed_options ' ] = array_map ($ cloneVar , $ form ['passed_options ' ]);
253
- $ form ['resolved_options ' ] = array_map ($ cloneVar , $ form ['resolved_options ' ]);
254
- $ form ['default_data ' ] = array_map ($ cloneVar , $ form ['default_data ' ]);
255
- $ form ['submitted_data ' ] = array_map ($ cloneVar , $ form ['submitted_data ' ]);
256
-
257
- if (!empty ($ form ['errors ' ])) {
258
- foreach ($ form ['errors ' ] as $ i => $ error ) {
259
- if (!empty ($ error ['trace ' ])) {
260
- $ form ['errors ' ][$ i ]['trace ' ] = array_map ($ cloneVar , $ error ['trace ' ]);
261
- }
246
+ foreach ($ form as $ k => $ v ) {
247
+ switch ($ k ) {
248
+ case 'type_class ' :
249
+ $ form [$ k ] = $ cloneVar ($ v , true );
250
+ break ;
251
+ case 'synchronized ' :
252
+ $ form [$ k ] = $ cloneVar ($ v );
253
+ break ;
254
+ case 'view_vars ' :
255
+ case 'passed_options ' :
256
+ case 'resolved_options ' :
257
+ case 'default_data ' :
258
+ case 'submitted_data ' :
259
+ if ($ v ) {
260
+ $ form [$ k ] = array_map ($ cloneVar , $ v );
261
+ }
262
+ break ;
263
+ case 'errors ' :
264
+ foreach ($ v as $ i => $ e ) {
265
+ if (!empty ($ e ['trace ' ])) {
266
+ $ form ['errors ' ][$ i ]['trace ' ] = array_map ($ cloneVar , $ e ['trace ' ]);
267
+ }
268
+ }
269
+ break ;
262
270
}
263
271
}
264
272
}
@@ -271,9 +279,13 @@ public function serialize()
271
279
*/
272
280
protected function cloneVar ($ var , $ isClass = false )
273
281
{
282
+ if ($ var instanceof Data) {
283
+ return $ var ;
284
+ }
274
285
if (null === $ this ->cloner ) {
275
286
if (class_exists (ClassStub::class)) {
276
287
$ this ->cloner = new VarCloner ();
288
+ $ this ->cloner ->setMaxItems (25 );
277
289
$ this ->cloner ->addCasters (array (
278
290
'* ' => function ($ v , array $ a , Stub $ s , $ isNested ) {
279
291
if ($ isNested && !$ v instanceof \DateTimeInterface) {
0 commit comments