1. Go to this page and download the library: Download somework/cqrs-bundle 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/ */
namespace App\Application\Command;
use SomeWork\CqrsBundle\Contract\Command;
final class CreateTask implements Command
{
public function __construct(
public readonly string $id,
public readonly string $name,
) {}
}
namespace App\Application\Command;
use SomeWork\CqrsBundle\Attribute\AsCommandHandler;
use SomeWork\CqrsBundle\Contract\CommandHandler;
#[AsCommandHandler(command: CreateTask::class)]
final class CreateTaskHandler implements CommandHandler
{
public function __invoke(CreateTask $command): mixed
{
// Save task to database...
return null;
}
}
namespace App\Controller;
use App\Application\Command\CreateTask;
use SomeWork\CqrsBundle\Contract\CommandBusInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Attribute\Route;
final class TaskController
{
#[Route('/tasks', methods: ['POST'])]
public function create(Request $request, CommandBusInterface $commandBus): JsonResponse
{
$data = $request->toArray();
$commandBus->dispatch(new CreateTask(
id: uuid_create(),
name: $data['name'],
));
return new JsonResponse(['status' => 'ok'], 201);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.