2024-03-01 13:34:14 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
require_once __DIR__."/../vendor/autoload.php";
|
|
|
|
|
|
|
|
use NoccyLabs\React\CommandBus\CommandBus;
|
|
|
|
use NoccyLabs\React\CommandBus\CommandRegistry;
|
|
|
|
use NoccyLabs\React\CommandBus\Context;
|
|
|
|
use React\EventLoop\Loop;
|
|
|
|
use React\Promise\Promise;
|
|
|
|
|
|
|
|
$commands = new CommandRegistry();
|
2024-03-01 13:59:12 +00:00
|
|
|
// Register some function to call. The name here is "hello", and it will
|
|
|
|
// receive a Context holding the call context. Any passed data will be
|
|
|
|
// available as properties on the Context object.
|
2024-03-01 13:34:14 +00:00
|
|
|
$commands->register("hello", function (Context $context) {
|
2024-03-01 13:59:12 +00:00
|
|
|
// You don't have to, but you should return a promise from your
|
|
|
|
// commands.
|
2024-03-01 13:34:14 +00:00
|
|
|
return new Promise(function (callable $resolve) use ($context) {
|
|
|
|
Loop::addTimer(1, function () use ($context, $resolve) {
|
|
|
|
$resolve("Hello, {$context->name}");
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
$commands->register("hello2", function (Context $context) {
|
2024-03-01 13:59:12 +00:00
|
|
|
// Just returning the value works just fine!
|
2024-03-01 13:34:14 +00:00
|
|
|
return "Hello2, {$context->name}";
|
|
|
|
});
|
|
|
|
|
2024-03-01 13:59:12 +00:00
|
|
|
// Create the bus
|
2024-03-01 13:34:14 +00:00
|
|
|
$bus = new CommandBus($commands);
|
|
|
|
|
2024-03-01 13:59:12 +00:00
|
|
|
// And execute some commands!
|
|
|
|
$bus->execute('hello', ['name'=>'Bob'])->then(
|
|
|
|
function ($result) {
|
|
|
|
var_dump($result);
|
|
|
|
}
|
|
|
|
);
|
2024-03-01 13:34:14 +00:00
|
|
|
|
2024-03-01 13:59:12 +00:00
|
|
|
$bus->execute('hello2', ['name'=>'Bob'])->then(
|
|
|
|
function ($result) {
|
|
|
|
var_dump($result);
|
|
|
|
}
|
|
|
|
);
|