コード例 #1
0
require __DIR__ . '/../vendor/autoload.php';
use League\Tactician\Handler\Locator\InMemoryLocator;
use League\Tactician\Handler\CommandNameExtractor\ClassNameExtractor;
use League\Tactician\Handler\MethodNameInflector\HandleClassNameInflector;
// Our example Command and Handler. ///////////////////////////////////////////
class RegisterUserCommand
{
    public $emailAddress;
    public $password;
}
class RegisterUserHandler
{
    public function handleRegisterUserCommand(RegisterUserCommand $command)
    {
        // Do your core application logic here. Don't actually echo stuff. :)
        echo "User {$command->emailAddress} was registered!\n";
    }
}
// Setup the bus, normally in your DI container ///////////////////////////////
$locator = new InMemoryLocator();
$locator->addHandler(new RegisterUserHandler(), RegisterUserCommand::class);
// Middleware is Tactician's plugin system. Even finding the handler and
// executing it is a plugin that we're configuring here.
$handlerMiddleware = new League\Tactician\Handler\CommandHandlerMiddleware(new ClassNameExtractor(), $locator, new HandleClassNameInflector());
$commandBus = new \League\Tactician\CommandBus([$handlerMiddleware]);
// Controller Code ////////////////////////////////////////////////////////////
$command = new RegisterUserCommand();
$command->emailAddress = '*****@*****.**';
$command->password = '******';
$commandBus->handle($command);
コード例 #2
0
ファイル: demo.php プロジェクト: equip/queue
<?php

require __DIR__ . '/../vendor/autoload.php';
// Setup Queue
$redis = new Redis();
$redis->connect('localhost');
$driver = new \Equip\Queue\Driver\RedisDriver($redis);
$queue = new \Equip\Queue\Queue($driver);
$queue_middleware = new \Equip\Queue\QueueMiddleware($queue, ['test' => [\Example\ExampleCommand::class]]);
// Setup Tactician
$locator = new \League\Tactician\Handler\Locator\InMemoryLocator([\Example\ExampleCommand::class => new \Example\ExampleHandler()]);
$handler_middleware = new \League\Tactician\Handler\CommandHandlerMiddleware(new \League\Tactician\Handler\CommandNameExtractor\ClassNameExtractor(), $locator, new \League\Tactician\Handler\MethodNameInflector\HandleInflector());
$bus = new \League\Tactician\CommandBus([$queue_middleware, $handler_middleware]);
// Setup worker
$worker = new \Equip\Queue\Worker($driver, $queue, new \Equip\Queue\Event(new \League\Event\Emitter(), new \Monolog\Logger('queue')), $bus);
if ($argv[1] == 'produce') {
    $bus->handle(new \Example\ExampleCommand());
} else {
    $worker->consume('test');
}