DEV Community

sebk69
sebk69

Posted on

8

Symfony clean architecture

I started to work on implementing clean architecture on my Symfony projects.

You can found a first version of skeleton on Framagit at https://framagit.org/small/symfony-clean-architecture

Clean architecture implementation

Clean architecture cone image

The clean architectures intend to isolate business code that rarely change when technical code changing every day.

  • The entities are business object
    • They represent the data (at sens of business not ORM)
    • They implement business rules
  • The use cases are the implementation of application business process and business rules
    • Use case classes
    • Request
    • Response
    • Request
  • The interface adapters
    • controllers (http handling)
    • gateways (interfaces)
    • presenters (class that format the driver response)
    • managers (database and other )
  • The end level are framework and drivers
    • input driver (http, message broker reception, websockets...)
    • output drivers (ORM implementation, message broker messages emission, other db drivers)
    • framework code

Skeleton implementation

In this implementation, we have two main directories :

  • "Domain" : all application and business specific rules code
  • "Infrastructure" : all technical code attached on framework and device

You are free to structure this code according to external devices

The domain directory is structured directory, representing your application :

  • Interface adapters
    • directory "Gateway" contains all contracts (class interface)
    • directory "Controller" contains all input http managers
    • directory "Manager" contains all other managers (ORM managers, services to messages brokers...)
    • Presenter : classes that formalise a manager or a controller answer (for example html code)
  • Applications business rules
    • Request : classes that formalise requesting data for a use case
    • Response : classes that formalise answer data of use case
    • UseCase : classes that implements application business rules
  • Entity
    • Classes that implements the business rules and data organization

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more