Skip to content

Architecture

This guide is dedicated to all PHP developers that want to learn more about each component.

As application is following the Domain-driven design (DDD) principle, the directory structure match this one.

src/
├── Application
├── Domain
├── Infrastructure
└── Presentation

Entity Relationship diagram

Here is the database ER model that will contain all data you may find it into data/reference/ directory.

ER diagram

Command Line Runner

CompatInfoDB is a Symfony Console Application with many Command.

Presentation layer

CLI presentation layer UML

Application layer

CLI application layer UML

Configuration

The ConfigResolver component is in charge to handle all arguments/options provided by an instance of Symfony\Component\Console\Input\InputInterface

You will find usage into the Bartlett\CompatInfoDb\Application\Kernel\ConsoleKernel::createFromInput function.

Configuration application layer UML

Kernel

This element is the main entry point of the bin/compatinfo-db command line runner.

Kernel application layer UML

Events

CompatInfoDB use the Symfony Event-Dispatcher component to avoid tight coupling between a set of interacting objects.

For example, the Bartlett\CompatInfoDb\Application\Event\Subscriber\ProfileEventSubscriber allows to print the consume summary results only on demand (with command line runner --profile option).

Event application layer UML