Skip to content

Commit 2de6ce4

Browse files
committed
Support expected target during toString
1 parent c9ddcd9 commit 2de6ce4

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

src/DeferredCallChain.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,14 @@ public function jsonSerialize()
8989
*/
9090
public function __toString()
9191
{
92-
$string = '(new ' . get_called_class() . ')';
92+
$string = '(new ' . get_called_class();
93+
if (is_string($this->expectedTarget)) {
94+
$string .= '(' . var_export($this->expectedTarget, true) . ')';
95+
}
96+
elseif (is_object($this->expectedTarget)) {
97+
$string .= '( ' . get_class($this->expectedTarget) . '#' . spl_object_id($this->expectedTarget) . ' )';
98+
}
99+
$string .= ')';
93100

94101
foreach ($this->stack as $i => $call) {
95102
if (isset($call['method'])) {

tests/unit/DeferredCallChainTest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,38 @@ public function test_toString()
1818
);
1919
}
2020

21+
/**
22+
*/
23+
public function test_toString_with_string_target()
24+
{
25+
$nameRobert = DeferredCallChain::new_("Human")
26+
->setName('Muda')
27+
->setFirstName('Robert')
28+
;
29+
30+
$this->assertEquals(
31+
"(new JClaveau\Async\DeferredCallChain('Human'))->setName('Muda')->setFirstName('Robert')",
32+
(string) $nameRobert
33+
);
34+
}
35+
36+
/**
37+
*/
38+
public function test_toString_with_instance_target()
39+
{
40+
$human = new Human;
41+
42+
$nameRobert = DeferredCallChain::new_($human)
43+
->setName('Muda')
44+
->setFirstName('Robert')
45+
;
46+
47+
$this->assertEquals(
48+
"(new JClaveau\Async\DeferredCallChain( JClaveau\Async\Human#" . spl_object_id($human) . " ))->setName('Muda')->setFirstName('Robert')",
49+
(string) $nameRobert
50+
);
51+
}
52+
2153
/**
2254
*/
2355
public function test_invoke()

0 commit comments

Comments
 (0)