Search by

mj-zana / ddd

mjnable

Domain-Driven Design building blocks for Zana applications

v1.0.1 2026-08-09 13:03 UTC

This package is auto-updated.

Last update: 2026-09-09 15:24:58 UTC


README

Domain-Driven Design building blocks for Zana applications.

Purpose

mj-zana/ddd contains the shared DDD base types used across application modules:

  • Zana\Ddd\Application\Command — CQRS command base class
  • Zana\Ddd\Application\Query — CQRS query base class
  • Zana\Ddd\Domain\Entity — entity with identity
  • Zana\Ddd\Domain\AggregateRoot — aggregate root with versioning + domain events
  • Zana\Ddd\Domain\ValueObject — immutable value object
  • Zana\Ddd\Domain\DomainEvent — domain event base class

These are framework-level abstractions. They have no external dependencies, so the package can be installed independently.

Install

composer require mj-zana/ddd

Usage

use Zana\Ddd\Domain\AggregateRoot;
use Zana\Ddd\Application\Command;

final class CreateUser extends Command
{
    public function __construct(public readonly string $name) { parent::__construct(); }
}

final class User extends AggregateRoot
{
    public function rename(string $name): void { /* ... */ }
}