acc-ddd-knowledge
DDD Knowledge Base
Quick reference for DDD architecture patterns and PHP implementation guidelines.
Core Principles
Layer Dependencies (Clean Architecture)
Presentation → Application → Domain ← Infrastructure
↓
Domain (center)
Rule: Dependencies point INWARD. Domain has ZERO external dependencies.
Layer Responsibilities
| Layer | Contains | Depends On |
|---|---|---|
| Domain | Entities, Value Objects, Aggregates, Domain Services, Repository Interfaces, Domain Events | Nothing |
| Application | Use Cases, DTOs, Application Services | Domain |
| Infrastructure | Repository Implementations, External APIs, DB, Cache, Queue | Domain, Application |
| Presentation | Controllers, Actions, Request/Response, CLI | Application |
Quick Checklists
Domain Layer Checklist
- No framework imports (Doctrine, Eloquent, Symfony)
- Entities have behavior, not just data
- Value Objects for domain concepts (Email, Money, Id)
- Repository INTERFACES defined here
- Enums for fixed value sets
- Domain Events for side effects
- No
public function set*()methods
Application Layer Checklist
- UseCases orchestrate, don't decide
- DTOs for input/output
- No business logic (if/switch on domain state)
- Transaction boundaries here
- No HTTP/CLI concerns
Infrastructure Layer Checklist
- Implements Domain interfaces
- No business logic in repositories
- External service adapters
- Caching, queuing implementations
Presentation Layer Checklist
- Validates input
- Maps to DTOs
- Calls UseCase
- Formats response
- No business logic
Common Violations Quick Reference
| Violation | Where to Look | Severity |
|---|---|---|
use Doctrine\\ in Domain |
Domain/*.php | Critical |
use Illuminate\\ in Domain |
Domain/*.php | Critical |
use Infrastructure\\ in Domain |
Domain/*.php | Critical |
| Only getters/setters in Entity | Domain/Entity/*.php | Warning |
=== 'pending' magic strings |
Any PHP file | Warning |
public function set*() |
Domain/Entity/*.php | Warning |
| Business logic in Controller | Presentation/*.php | Warning |
| Business logic in Repository | Infrastructure/*.php | Warning |
PHP 8.5 DDD Patterns
Value Object
final readonly class Email
{
public function __construct(
public string $value
) {
if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
throw new InvalidArgumentException('Invalid email');
}
}
public function equals(self $other): bool
{
return $this->value === $other->value;
}
}
Entity with Behavior
final class Order
{
private OrderStatus $status;
public function __construct(
private readonly OrderId $id,
private readonly CustomerId $customerId
) {
$this->status = OrderStatus::Pending;
}
public function confirm(): void
{
if (!$this->status->canTransitionTo(OrderStatus::Confirmed)) {
throw new DomainException('Cannot confirm order');
}
$this->status = OrderStatus::Confirmed;
}
}
Repository Interface
// Domain/Repository/OrderRepositoryInterface.php
interface OrderRepositoryInterface
{
public function findById(OrderId $id): ?Order;
public function save(Order $order): void;
}
References
For detailed information, load these reference files:
references/layer-architecture.md— Detailed layer rules and boundariesreferences/domain-patterns.md— Entity, VO, Aggregate, Repository patternsreferences/application-patterns.md— UseCase, DTO, Command/Query patternsreferences/antipatterns.md— Common violations with detection patternsreferences/php-specific.md— PHP 8.5 specific implementations
Assets
assets/report-template.md— Structured audit report template
More from dykyi-roman/awesome-claude-code
psr-overview-knowledge
PHP Standards Recommendations (PSR) overview knowledge base. Provides comprehensive reference for all accepted PSRs including PSR-1,3,4,6,7,11,12,13,14,15,16,17,18,20. Use for PSR selection decisions and compliance audits.
22detect-code-smells
Detects code smells in PHP codebases. Identifies God Class, Feature Envy, Data Clumps, Long Parameter List, Long Method, Primitive Obsession, Message Chains, Inappropriate Intimacy. Generates actionable reports with refactoring recommendations.
15clean-arch-knowledge
Clean Architecture knowledge base. Provides patterns, antipatterns, and PHP-specific guidelines for Clean Architecture and Hexagonal Architecture audits.
15ddd-knowledge
DDD architecture knowledge base. Provides patterns, antipatterns, and PHP-specific guidelines for Domain-Driven Design audits.
14testing-knowledge
Testing knowledge base for PHP 8.4 projects. Provides testing pyramid, AAA pattern, naming conventions, isolation principles, DDD testing guidelines, and PHPUnit patterns.
12bug-root-cause-finder
Root cause analysis methods for PHP bugs. Provides 5 Whys technique, fault tree analysis, git bisect guidance, and stack trace parsing.
12