Skip to content

Commit 59bb35e

Browse files
committed
Dumper: dumps Closure as PHP code
1 parent 2ea0c5f commit 59bb35e

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

src/PhpGenerator/Dumper.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,7 @@ public function dump($var, int $column = 0): string
3737

3838
private function dumpVar(&$var, array $parents = [], int $level = 0, int $column = 0): string
3939
{
40-
if ($var instanceof Literal) {
41-
return ltrim(Nette\Utils\Strings::indent(trim((string) $var), $level), "\t");
42-
43-
} elseif ($var === null) {
40+
if ($var === null) {
4441
return 'null';
4542

4643
} elseif (is_string($var)) {
@@ -50,6 +47,9 @@ private function dumpVar(&$var, array $parents = [], int $level = 0, int $column
5047
return $this->dumpArray($var, $parents, $level, $column);
5148

5249
} elseif (is_object($var)) {
50+
if ($var instanceof Literal || $var instanceof Closure) {
51+
return ltrim(Nette\Utils\Strings::indent(trim((string) $var), $level), "\t");
52+
}
5353
return $this->dumpObject($var, $parents, $level);
5454

5555
} elseif (is_resource($var)) {

tests/PhpGenerator/Dumper.dump().phpt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,13 @@ Assert::same("'He\\llo'", $dumper->dump('He\llo'));
4040
Assert::same('\'He\ll\\\\\o \\\'wor\\\\\\\'ld\\\\\'', $dumper->dump('He\ll\\\o \'wor\\\'ld\\'));
4141
Assert::same('[]', $dumper->dump([]));
4242

43+
// internal classes
4344
Assert::same('[$s]', $dumper->dump([new PhpLiteral('$s')]));
45+
same('[
46+
function () {
47+
return 1;
48+
},
49+
]', $dumper->dump([(new Nette\PhpGenerator\Closure)->setBody('return 1;')]));
4450

4551
Assert::same('[1, 2, 3]', $dumper->dump([1, 2, 3]));
4652
Assert::same("['a']", $dumper->dump(['a']));

0 commit comments

Comments
 (0)