搜索

PythonReactSEOPDF
GitHub Skill

acc-ddd-knowledge

DDD architecture knowledge base. Provides patterns, antipatterns, and PHP-specific guidelines for Domain-Driven Design audits.

diegosouzapw☆ 3 仓库 Stars1 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

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 boundaries
  • references/domain-patterns.md — Entity, VO, Aggregate, Repository patterns
  • references/application-patterns.md — UseCase, DTO, Command/Query patterns
  • references/antipatterns.md — Common violations with detection patterns
  • references/php-specific.md — PHP 8.5 specific implementations

Assets

  • assets/report-template.md — Structured audit report template

使用示例

查看来源仓库中的使用示例与配置说明。

查看来源 ↗

来源历史

收录时间
2026-03-11
索引更新时间
2026-03-11
Branch
main

收录与同步日期属于本站记录。源码修改历史请查看来源仓库。

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!