@@ -29,13 +29,13 @@ final class Dumper
29
29
/**
30
30
* Returns a PHP representation of a variable.
31
31
*/
32
- public function dump ($ var ): string
32
+ public function dump ($ var, int $ column = 0 ): string
33
33
{
34
- return $ this ->dumpVar ($ var );
34
+ return $ this ->dumpVar ($ var, [], 0 , $ column );
35
35
}
36
36
37
37
38
- private function dumpVar (&$ var , array $ parents = [], int $ level = 0 ): string
38
+ private function dumpVar (&$ var , array $ parents = [], int $ level = 0 , int $ column = 0 ): string
39
39
{
40
40
if ($ var instanceof PhpLiteral) {
41
41
return (string ) $ var ;
@@ -47,7 +47,7 @@ private function dumpVar(&$var, array $parents = [], int $level = 0): string
47
47
return $ this ->dumpString ($ var );
48
48
49
49
} elseif (is_array ($ var )) {
50
- return $ this ->dumpArray ($ var , $ parents , $ level );
50
+ return $ this ->dumpArray ($ var , $ parents , $ level, $ column );
51
51
52
52
} elseif (is_object ($ var )) {
53
53
return $ this ->dumpObject ($ var , $ parents , $ level );
@@ -83,7 +83,7 @@ private function dumpString(string $var): string
83
83
}
84
84
85
85
86
- private function dumpArray (array &$ var , array $ parents , int $ level ): string
86
+ private function dumpArray (array &$ var , array $ parents , int $ level, int $ column ): string
87
87
{
88
88
if (empty ($ var )) {
89
89
return '[] ' ;
@@ -99,14 +99,18 @@ private function dumpArray(array &$var, array $parents, int $level): string
99
99
$ counter = 0 ;
100
100
101
101
foreach ($ var as $ k => &$ v ) {
102
- $ item = ( $ k === $ counter ? '' : $ this ->dumpVar ($ k ) . ' => ' ) . $ this -> dumpVar ( $ v , $ parents , $ level + 1 ) ;
102
+ $ keyPart = $ k === $ counter ? '' : $ this ->dumpVar ($ k ) . ' => ' ;
103
103
$ counter = is_int ($ k ) ? max ($ k + 1 , $ counter ) : $ counter ;
104
- $ outInline .= ($ outInline === '' ? '' : ', ' ) . $ item ;
105
- $ outWrapped .= "\t$ item, \n$ space " ;
104
+ $ outInline .= ($ outInline === '' ? '' : ', ' ) . $ keyPart ;
105
+ $ outInline .= $ this ->dumpVar ($ v , $ parents , 0 , $ column + strlen ($ outInline ));
106
+ $ outWrapped .= "\t"
107
+ . $ keyPart
108
+ . $ this ->dumpVar ($ v , $ parents , $ level + 1 , strlen ($ keyPart ))
109
+ . ", \n$ space " ;
106
110
}
107
111
108
112
array_pop ($ parents );
109
- $ wrap = strpos ($ outInline , "\n" ) !== false || strlen ($ outInline ) > $ this ->wrapLength - $ level * self :: INDENT_LENGTH ;
113
+ $ wrap = strpos ($ outInline , "\n" ) !== false || $ level * self :: INDENT_LENGTH + $ column + strlen ($ outInline ) + 3 > $ this ->wrapLength ; // 3 = [],
110
114
return '[ ' . ($ wrap ? $ outWrapped : $ outInline ) . '] ' ;
111
115
}
112
116
@@ -145,7 +149,10 @@ private function dumpObject(&$var, array $parents, int $level): string
145
149
146
150
foreach ($ arr as $ k => &$ v ) {
147
151
if (!isset ($ props ) || isset ($ props [$ k ])) {
148
- $ out .= "$ space \t" . $ this ->dumpVar ($ k ) . ' => ' . $ this ->dumpVar ($ v , $ parents , $ level + 1 ) . ", \n" ;
152
+ $ out .= "$ space \t"
153
+ . ($ keyPart = $ this ->dumpVar ($ k ) . ' => ' )
154
+ . $ this ->dumpVar ($ v , $ parents , $ level + 1 , strlen ($ keyPart ))
155
+ . ", \n" ;
149
156
}
150
157
}
151
158
0 commit comments