feat(core): Implement DDD, CQRS, and Event Sourcing architecture

- Add project README and Composer configuration with PSR-4 autoloading
- Implement domain layer with AggregateRoot base class for event sourcing
- Create Carrier aggregate with CarrierRegistered domain event
- Add application layer with RegisterCarrierCommand and RegisterCarrierHandler
- Implement infrastructure layer with EventStore interface and CassandraEventStore
- Add CommandBus and Router for request handling and routing
- Create demo test file to showcase carrier registration workflow
- Establish foundation for event-driven architecture with Cassandra persistence
This commit is contained in:
m.jalmoudy
2025-12-02 14:58:22 +03:30
parent d963da40e1
commit 6b5222ad84
13 changed files with 406 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
<?php
namespace DistributingCarriers\Infrastructure;
class Router
{
private $routes = [];
public function add(string $method, string $path, callable $handler): void
{
$this->routes[] = [
'method' => $method,
'path' => $path,
'handler' => $handler
];
}
public function dispatch(string $method, string $uri)
{
foreach ($this->routes as $route) {
if ($route['method'] === $method && $route['path'] === $uri) {
return call_user_func($route['handler']);
}
}
http_response_code(404);
echo "Not Found";
}
}