@@ -29,13 +29,13 @@ final class Dumper
2929 /**
3030 * Returns a PHP representation of a variable.
3131 */
32- public function dump ($ var ): string
32+ public function dump ($ var, int $ column = 0 ): string
3333 {
34- return $ this ->dumpVar ($ var );
34+ return $ this ->dumpVar ($ var, [], 0 , $ column );
3535 }
3636
3737
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
3939 {
4040 if ($ var instanceof PhpLiteral) {
4141 return (string ) $ var ;
@@ -47,7 +47,7 @@ private function dumpVar(&$var, array $parents = [], int $level = 0): string
4747 return $ this ->dumpString ($ var );
4848
4949 } elseif (is_array ($ var )) {
50- return $ this ->dumpArray ($ var , $ parents , $ level );
50+ return $ this ->dumpArray ($ var , $ parents , $ level, $ column );
5151
5252 } elseif (is_object ($ var )) {
5353 return $ this ->dumpObject ($ var , $ parents , $ level );
@@ -83,7 +83,7 @@ private function dumpString(string $var): string
8383 }
8484
8585
86- private function dumpArray (array &$ var , array $ parents , int $ level ): string
86+ private function dumpArray (array &$ var , array $ parents , int $ level, int $ column ): string
8787 {
8888 if (empty ($ var )) {
8989 return '[] ' ;
@@ -99,14 +99,18 @@ private function dumpArray(array &$var, array $parents, int $level): string
9999 $ counter = 0 ;
100100
101101 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 ) . ' => ' ;
103103 $ 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 " ;
106110 }
107111
108112 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 = [],
110114 return '[ ' . ($ wrap ? $ outWrapped : $ outInline ) . '] ' ;
111115 }
112116
@@ -145,7 +149,10 @@ private function dumpObject(&$var, array $parents, int $level): string
145149
146150 foreach ($ arr as $ k => &$ v ) {
147151 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" ;
149156 }
150157 }
151158
0 commit comments