2024-03-01 14:34:14 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace NoccyLabs\React\CommandBus;
|
|
|
|
|
|
|
|
use React\Promise\Deferred;
|
|
|
|
use React\Promise\Promise;
|
|
|
|
use React\Promise\PromiseInterface;
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
class Command
|
|
|
|
{
|
|
|
|
/** @var string $name The command name */
|
|
|
|
private string $name;
|
|
|
|
|
|
|
|
/** @var callable $handler The handler */
|
|
|
|
private $handler;
|
|
|
|
|
|
|
|
public function __construct(string $name, callable $handler)
|
|
|
|
{
|
|
|
|
$this->name = $name;
|
|
|
|
$this->handler = $handler;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getName(): string
|
|
|
|
{
|
|
|
|
return $this->name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function call(Context $context): PromiseInterface
|
|
|
|
{
|
|
|
|
return new Promise(function (callable $resolve) use ($context) {
|
2024-03-19 00:01:12 +01:00
|
|
|
$args = $context->toMethodParameters($this->handler);
|
|
|
|
$resolve(call_user_func($this->handler, ...$args));
|
|
|
|
//$resolve(call_user_func($this->handler, $context));
|
2024-03-01 14:34:14 +01:00
|
|
|
return;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|