gibass/domain-maker-bundle

Generating classes for clean architecture Project in symfony

Maintainers

Package info

github.com/Gibass/domain-maker-bundle

Type:symfony-bundle

pkg:composer/gibass/domain-maker-bundle

Statistics

Installs: 8

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.1 2026-02-14 14:04 UTC

This package is auto-updated.

Last update: 2026-03-14 14:21:02 UTC


README

gibass/domain-maker-bundle is a Symfony bundle that adds custom Maker commands to scaffold a Clean Architecture structure by domain.

The bundle generates classes and places them under your configured src directory.

Features

  • Create domain-oriented classes with interactive commands.
  • Support create-or-choose workflows for existing classes.
  • Handle dependencies between generated elements (for example Repository <-> Entity <-> Gateway).
  • Auto-update route config when generating controllers (config/routes.yaml).

Requirements

  • PHP >=8.2
  • symfony/maker-bundle ^1.61
  • gibass/domain-core ^0.1

Folder Structure

For example, we need to create a Blog domain; this bundle can generate a folder structure like:

|-- src // source folder
|   `-- Blog // A specific domain
|       |-- Domain
|       |   |-- Gateway
|       |   |   |-- PostGatewayInterface.php
|       |   |-- Model
|       |   |   |-- Entity
|       |   |   |   |-- Post.php
|       |   |-- UseCase
|       |   |   |-- CreatePost.php
|       |-- Infrastructure
|       |   |-- Adapter
|       |   |   |-- Repository
|       |   |       |-- PostRepository.php
|       |-- UserInterface
|       |   |-- Controller
|       |   |   |-- PostController.php
|       |   |-- Presenter
|       |   |   |-- Html
|       |   |   |   |-- PostPresenterHTML.php
|       |   |   |-- Json
|       |   |   |   |-- PostPresenterJSON.php

Installation

  1. Installing the bundle with composer :
composer require --dev gibass/domain-maker-bundle 
  1. Add this line in config/bundles.php:
<?php

return [
    // ...
    Gibass\DomainMakerBundle\DomainMakerBundle::class => ['dev' => true, 'test' => true],
];

Configuration

Default configuration:

domain_maker:
  parameters:
    root_namespace: App # Your project root namespace 
    dir:
      src: '%kernel.project_dir%/src/' # The source folder
      config: '%kernel.project_dir%/config/' # The symfony config folder

You can override the default configuration with your own values. Create a file domain_maker.yaml under config/packages Example :

domain_maker:
  parameters:
    root_namespace: MyProject # Set Root Namespace

Available Commands

  • php bin/console maker:use-case
  • php bin/console maker:entity
  • php bin/console maker:gateway
  • php bin/console maker:repository
  • php bin/console maker:presenter
  • php bin/console maker:controller

Interactive Flow

Each maker command first asks for the domain:

  1. Create a new domain, or
  2. Choose an existing one.

Depending on command type, it may also ask to:

  • create a new dependency,
  • choose an existing dependency,
  • or skip optional dependencies.

Example:

  • maker:repository can auto-create/select Gateway and select/create Entity.
  • maker:controller can optionally include a UseCase and/or a Presenter.

Notes

  • Existing files are not overwritten: generation throws an error if target file already exists.
  • Controller generation also writes route resource config into config/routes.yaml.