1 | <?php declare(strict_types=1); |
||
20 | final class WorkerChild implements ChildInterface |
||
21 | { |
||
22 | private $messenger; |
||
23 | private $loop; |
||
24 | |||
25 | /** |
||
26 | * WorkerChild constructor. |
||
27 | */ |
||
28 | public function __construct(Messenger $messenger, LoopInterface $loop) |
||
29 | { |
||
30 | $this->messenger = $messenger; |
||
31 | $this->loop = $loop; |
||
32 | |||
33 | $this->messenger->registerRpc('table.call', function (Payload $payload) { |
||
34 | $deferred = new Deferred(); |
||
35 | $this->loop->futureTick(function () use ($payload, $deferred) { |
||
36 | $this->handleTableCall($payload, $deferred); |
||
37 | }); |
||
38 | |||
39 | return $deferred->promise(); |
||
40 | }); |
||
41 | |||
42 | $this->messenger->registerRpc('paginate', function (Payload $payload) { |
||
43 | return futurePromise($this->loop, $payload)->then(function ($payload) { |
||
44 | return $this->handlePaginateCall($payload); |
||
45 | }); |
||
46 | }); |
||
47 | } |
||
48 | |||
49 | /** |
||
50 | * @inheritDoc |
||
51 | */ |
||
52 | public static function create(Messenger $messenger, LoopInterface $loop) |
||
63 | |||
64 | /** |
||
65 | * @param Payload $payload |
||
66 | * @param Deferred $deferred |
||
67 | */ |
||
68 | protected function handleTableCall(Payload $payload, Deferred $deferred) |
||
97 | |||
98 | /** |
||
99 | * @param Payload $payload |
||
100 | * @param Deferred $deferred |
||
101 | */ |
||
102 | protected function handlePaginateCall(Payload $payload) |
||
127 | } |
||
128 |
This check looks at variables that are passed out again to other methods.
If the outgoing method call has stricter type requirements than the method itself, an issue is raised.
An additional type check may prevent trouble.