PHP code example of componenta / cqrs
1. Go to this page and download the library: Download componenta/cqrs library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
componenta / cqrs example snippets
$operation = $commands->dispatch(new CreateUserCommand($email));
$result = $operation->result?->value;
$bus = new Componenta\CQRS\Command\CommandBus(
commandHandler: $terminalHandler,
middlewares: [
$firstMiddleware,
$secondMiddleware,
],
operationFactory: $operationFactory,
);
$batch = new Componenta\CQRS\Command\BatchCommandBus($commands);
$operations = $batch->dispatchMany([
new FirstCommand(),
new SecondCommand(),
]);
public function execute(
OperationInterface $operation,
OperationHandlerInterface $handler,
): OperationInterface;
$result = $queries->handle(new GetUserQuery($id));
use Componenta\CQRS\ConfigKey;
final class ApplicationConfigProvider extends \Componenta\Config\ConfigProvider
{
protected function getConfig(): array
{
return [
ConfigKey::COMMAND_HANDLERS => [
['message' => CreateUserCommand::class, 'service' => CreateUserHandler::class, 'method' => '__invoke'],
],
ConfigKey::QUERY_HANDLERS => [
['message' => GetUserQuery::class, 'service' => GetUserHandler::class, 'method' => 'handle'],
],
ConfigKey::COMMAND_LISTENERS => [
['message' => CreateUserCommand::class, 'service' => AuditListener::class, 'priority' => 10,
'events' => [\Componenta\CQRS\Command\Event\CommandProcessedEvent::class]],
],
];
}
}
$locator = new \Componenta\CQRS\Command\Locator\CommandHandlerLocator([
CreateUserCommand::class => ['service' => CreateUserHandler::class, 'method' => '__invoke'],
], $container);
$command = new CreateUserCommand($email);
$handler = $locator->locateFor($command);
$handler($command);
$attribute = $metadata->get($command, MyAttribute::class);
#[Componenta\CQRS\Command\Attribute\AsCommandHandler]
#[Componenta\CQRS\Command\Attribute\AsCommandListener(CreateUserCommand::class)]
#[Componenta\CQRS\Query\Attribute\AsQueryHandler]