@@ -85,33 +85,27 @@ private function dumpString(string $var): string
8585
8686 private function dumpArray (array &$ var , array $ parents , int $ level ): string
8787 {
88- static $ marker ;
89- if ($ marker === null ) {
90- $ marker = uniqid ("\x00" , true );
91- }
9288 if (empty ($ var )) {
9389 return '[] ' ;
9490
95- } elseif ($ level > $ this ->maxDepth || isset ($ var[ $ marker ] )) {
91+ } elseif ($ level > $ this ->maxDepth || in_array ($ var, $ parents ?? [], true )) {
9692 throw new Nette \InvalidArgumentException ('Nesting level too deep or recursive dependency. ' );
9793 }
9894
9995 $ space = str_repeat ("\t" , $ level );
10096 $ outInline = '' ;
10197 $ outWrapped = "\n$ space " ;
102- $ var [ $ marker ] = true ;
98+ $ parents [ ] = $ var ;
10399 $ counter = 0 ;
104100
105101 foreach ($ var as $ k => &$ v ) {
106- if ($ k !== $ marker ) {
107- $ item = ($ k === $ counter ? '' : $ this ->dumpVar ($ k ) . ' => ' ) . $ this ->dumpVar ($ v , $ parents , $ level + 1 );
108- $ counter = is_int ($ k ) ? max ($ k + 1 , $ counter ) : $ counter ;
109- $ outInline .= ($ outInline === '' ? '' : ', ' ) . $ item ;
110- $ outWrapped .= "\t$ item, \n$ space " ;
111- }
102+ $ item = ($ k === $ counter ? '' : $ this ->dumpVar ($ k ) . ' => ' ) . $ this ->dumpVar ($ v , $ parents , $ level + 1 );
103+ $ counter = is_int ($ k ) ? max ($ k + 1 , $ counter ) : $ counter ;
104+ $ outInline .= ($ outInline === '' ? '' : ', ' ) . $ item ;
105+ $ outWrapped .= "\t$ item, \n$ space " ;
112106 }
113107
114- unset( $ var [ $ marker ] );
108+ array_pop ( $ parents );
115109 $ wrap = strpos ($ outInline , "\n" ) !== false || strlen ($ outInline ) > $ this ->wrapLength - $ level * self ::INDENT_LENGTH ;
116110 return '[ ' . ($ wrap ? $ outWrapped : $ outInline ) . '] ' ;
117111 }
0 commit comments