Event-Driven Architecture (EDA) is a powerful way to decouple components in PHP applications. Instead of calling services directly, components emit events that other components listen to.

Core concepts

  • Events: Signals that something happened.
  • Listeners: Responders to events.
  • Dispatchers: The mechanism that delivers events to listeners.

Benefits

EDA allows for highly modular code. For example, a UserRegistration event can trigger sending an email, logging, and analytics without the registration code knowing about it.

Implementation in PHP

Many frameworks provide a built-in EventDispatcher. Even in your mini-framework, you can implement a simple version:

class EventDispatcher {
    private array $listeners = [];

    public function addListener(string $event, callable $listener) {
        $this->listeners[$event][] = $listener;
    }

    public function dispatch(string $event, $payload) {
        foreach ($this->listeners[$event] ?? [] as $listener) {
            $listener($payload);
        }
    }
}

Conclusion

Using EDA improves maintainability and scalability. Components are loosely coupled, making it easier to add new features without touching core logic.