@@ -85,33 +85,27 @@ private function dumpString(string $var): string
85
85
86
86
private function dumpArray (array &$ var , array $ parents , int $ level ): string
87
87
{
88
- static $ marker ;
89
- if ($ marker === null ) {
90
- $ marker = uniqid ("\x00" , true );
91
- }
92
88
if (empty ($ var )) {
93
89
return '[] ' ;
94
90
95
- } elseif ($ level > $ this ->maxDepth || isset ($ var[ $ marker ] )) {
91
+ } elseif ($ level > $ this ->maxDepth || in_array ($ var, $ parents ?? [], true )) {
96
92
throw new Nette \InvalidArgumentException ('Nesting level too deep or recursive dependency. ' );
97
93
}
98
94
99
95
$ space = str_repeat ("\t" , $ level );
100
96
$ outInline = '' ;
101
97
$ outWrapped = "\n$ space " ;
102
- $ var [ $ marker ] = true ;
98
+ $ parents [ ] = $ var ;
103
99
$ counter = 0 ;
104
100
105
101
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 " ;
112
106
}
113
107
114
- unset( $ var [ $ marker ] );
108
+ array_pop ( $ parents );
115
109
$ wrap = strpos ($ outInline , "\n" ) !== false || strlen ($ outInline ) > $ this ->wrapLength - $ level * self ::INDENT_LENGTH ;
116
110
return '[ ' . ($ wrap ? $ outWrapped : $ outInline ) . '] ' ;
117
111
}
0 commit comments